卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章64334本站已运行4115

通过身份证号计算年龄SQL语法

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语句

select 
id,
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)) as age,
idcard
from t_table;

卓越飞翔博客
上一篇: 优学院自动刷课PHP代码
下一篇: 数据库SQL查询方法集合
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏