MySql通过身份证号码计算年龄和性别

一、如何通过身份证号码计算当前用户的年龄

计算规则:先取出身份证上的年份并计算年份与当前年份的差,再比较当前日期与身份证上的月日(即判断此人是否已经过了国历生日),决定是否需要减去一岁,已经过了生日的就不用减掉了。

1、先计算当前年份与与出生年份的差值

- 通过substring() 函数取出生年月、身份证号从第七位开始是出生年月,取四位
	- substring(idcard,7,4- 当前月份,通过now()函数获取
	- substring(now(),1,4):当前年份是2022- 减法求当前年份到出生年份之间差值
	- substring(now(),1,4)-substring(idcard,7,4)

2、比较当前日期与身份证号上的日期,判断是否已经过了生日,来决定是否用当前年龄年月减去1。已经过完生日的不需要减

- 获取当前月份天数,通过date_format() 函数
	- date_format(now(),'%m%d')
- 取身份证号上的出生日期,从第十一位开始,取四位
	- substring(idcard,11,4)
- 做减法,计算当前日期与出生日期的差值,如果大于0,说明,说明已经过过生日,则年月不用减一
	- if(DATE_FORMAT(NOW(),'%m%d')-SUBSTRING(idcard,11,4)>0,0,1 )

3、完整sql

(substring(NOW(),1,4) - SUBSTRING(idcard,7,4) - (if(DATE_FORMAT(NOW(),'%m%d')-SUBSTRING(idcard,11,4)>0,0,1  ) )  )	as 'age'

二、身份证号码取性别

15位身份证号码:第15位代表性别,奇数为男,偶数为女
18位身份证号码:第17位代表性别,奇数为男,偶数为女

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值