菜鸡源码,专注精品下载!
当前位置:首页 > 建站教程 > 建站知识

使用SQL语法根据身份证号计算年龄

发布时间:2024-01-05  栏目:建站知识   浏览:   分类:数据库教程 SQL语法 sql语句

要通过身份证号计算年龄,可以使用以下SQL语法: 1. 首先,提取身份证号中的出生年份; 2. 然后,获取当前年份; 3. 最后,用当前年份减去出生年份得到年龄。 以下是具体的SQL代码: ```sql SELECT FLOOR(DATEDIFF(CURDATE(), STR_TO_DATE(SUBSTRING(身份证号, 7, 8), '%Y%m%d')) / 365) AS 年龄 FROM 表名; ``` 这段代码首先使用`SUBSTRING`函数提取身份证号中的出生日期(假设格式为'YYYYMMDD'),然后使用`STR_TO_DATE`函数将其转换为日期格式。接着,使用`DATEDIFF`函数计算当前日期与出生日期之间的天数差,再除以365得到年龄。最后,使用`FLOOR`函数将

1.截取身份证号上的出生日期

身份证一般为18位数和15位数

18位数身份证的第7-10位数是出生年份,第11-14位数是出生月日,所以18位身份证的年龄计算如下

substring(now(),1,4)-substring(idcard,7,4))-(substring(idcard,11,4)-date_format(now(),'%m%d')>0

15位数身份证的第7-8位数是出生年份,但是少了两位。15位数身份证把1930就简化成30少了前面的19,并且15位身份证全部都在19XX年颁发。 第9-12位数是出生月日,所以15位身份证的年龄计算如下

substring(now(),1,4)-(1900+substring(idcard,7,2)))-(substring(idcard,9,4)-date_format(now(),'%m%d')>0

2.加if判断18位和15位

MySQL的if语法比较像JAVA里的三元表达式

IF(条件,条件为true执行,条件为false执行)

MySQL的字符串长度获取方法

CHAR_LENGTH(字符串)

3.最终的sql语句

selectid,if(CHAR_LENGTH(idcard)<18,(substring(now(),1,4)-(1900+substring(idcard,7,2)))-(substring(idcard,9,4)-date_format(now(),'%m%d')>0),(substring(now(),1,4)-substring(idcard,7,4))-(substring(idcard,11,4)-date_format(now(),'%m%d')>0))asage,idcardfromt_table;


相关文章

    无相关信息
评论
建站知识
建站知识
使用技巧
调试安装
运营推广