钟二网络头像

钟二网络

探索SQL查询技巧、Linux系统运维以及Web开发前沿技术,提供一站式的学习体验

  • 文章92531
  • 阅读1245063
首页 SQL 正文内容

根据身份证号计算年龄sql

钟逸 SQL 2025-09-03 20:11:54 3

身份证号是每个人独特的身份标识,其中包含了出生日期等重要信息。通过解析身份证号,我们可以轻松计算出持有人的年龄。本文将介绍使用 SQL 语句根据身份证号计算年龄的两种 。

一:使用 DATETIME 函数

此 依赖于 MySQL 的 DATETIME 函数,它可以将日期字符串转换为 Date 类型。

sql

SELECT CURDATE() - DATE(SUBSTR(身份证号, 7, 8)) AS 年龄

FROM my_table

WHERE 身份证号 LIKE '19000101%';

其中:

* CURDATE() 返回当前日期。

* DATE(SUBSTR(身份证号, 7, 8)) 从身份证号中提取出生日期,并将其转换为 Date 类型。

* 身份证号 是要分析的身份证号字段。

二:使用 STR_TO_DATE 函数

此 使用 STR_TO_DATE 函数将身份证号中的出生日期字符串转换为 Date 类型。

sql

SELECT TIMESTAMPDIFF(YEAR, STR_TO_DATE(SUBSTR(身份证号, 7, 8), '%Y%m%d'), CURDATE()) AS 年龄

FROM my_table

WHERE 身份证号 LIKE '19000101%';

其中:

* STR_TO_DATE(SUBSTR(身份证号, 7, 8), '%Y%m%d') 将身份证号中的出生日期字符串转换为 Date 类型。

* TIMESTAMPDIFF(YEAR, ..., CURDATE()) 计算两个日期之间的年差。

* 身份证号 是要分析的身份证号字段。

注意点

* 身份证号格式必须遵循中国大陆的标准,否则可能会导致计算结果不正确。

* 出生日期部分应为 8 位数字,否则 SQL 语句可能会解析失败。

* 这些 只计算了年龄的年份部分,如果没有提供月份和日期信息,则年龄可能会出现误差。

文章目录
    搜索