【达梦】通过身份证号查询年龄

现在的身份证应该没有不是18位的吧。。。。

select substring(identity_no ,7,8), (substring(now(),1,4)-substring(identity_no ,7,4)) - ( case when date_format(now(),'%m%d') - substring(identity_no,11,4) > 0 then 0 else 1 end ) as age from member limit 5;

解释一下:
substring(now(),1,4)-substring(identity_no ,7,4)):根据年份获取一个年份差,
case when date_format(now(),'%m%d') - substring(identity_no,11,4) > 0 then 0 else 1 end : 通过当前月日和 身份证的月日相减,如果大于0,说明这个人在今年已经过了生日,所以不用减掉1岁。反之当前日期小于身份证上的日期,表明还没有过生日,年龄就需要减掉1岁。

posted @   aaacarrot  阅读(916)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示