MySql数据库,如何从身份证号计算出用户年龄?
计算规则为先取出身份证上的年份并计算年份与当前年份的差,再比较当前日期与身份证上的月日(即判断此人是否已经过了国历生日),决定是否需要减去一岁,已经过了生日的就不用减掉了。
1.先处理出生年代与当前年份的差
1)身份证第7位开始,取4位数,是出生年份
substring()函数
substring(idcardaccount,7,4)
2)此时此刻的年份
now()函数,今天是2022-11-09 11:27
substring(now(),1,4),是2022年
3)做减法
substring(now(),1,4)-substring(idcardaccount,7,4)
2.再比较当前日期与身份证上的月日(即判断此人是否已经过了国历生日),决定是否需要减去一岁,已经过了生日的就不用减掉了
substring(id_number,11,4)-date_format(now(),'%m%d')>0
1)提取当前月份天数
date_format()函数
date_format(now(),'%m%d')
2)身份证上的月份天数,从第11位开始是出生月份,4位数表示,取四位
substring(idcardaccount,11,4)
3)做减法,计算月份天数差
date_format(now(),'%m%d')-substring(idcardaccount,11,4)
4)加限制条件,已经过了生日的不用减掉
date_format(now(),'%m%d')-substring(idcardaccount,11,4)>0
3.把年度、月日的计算,组合起来
最外层套一个括号,起个别名叫 "age"或者“年龄"
(substring(now(),1,4)-substring(idcardaccount,7,4)-(date_format(now(),'%m%d')-substring(idcardaccount,11,4)>0)) as "年龄"
联系客服