mysql 身份证算年龄 场景:没有冗余年龄字段的情况下,列表查询通过身份证计算联络(如果有冗余年龄字段,需要单独创建定时任务,更新数据库年龄字段,增加了复杂度,容易出现问题,且不容易理解)问题:18位数身份证和15位身份证却别知识点 场景:没有冗余年龄字段的情况下,列表查询通过身份证计算联络(如果有冗余年龄字段,需要单独创建定时任务,更新数据库年龄字段,增加了复杂度,容易出现问题,且不容易理解) 问题:18位数身份证和15位身份证却别 知识点 差函数TIMESTAMPDIFF.case when. // hit_count 可能出现未初始化的情况 TIMESTAMPDIFF( YEAR, CASE LENGTH(id_number) WHEN 18 THEN cast(substring(id_number, 7, 8) AS DATE) ELSE cast(substring(id_number, 7, 6) AS DATE) END, CURDATE() ) // hit_count 可能出现未初始化的情况 SELECT t1.id, t1.name, t1.id_number, t1.sex, t1.birthday, t1.nation, TIMESTAMPDIFF( YEAR, CASE LENGTH(t1.id_number) WHEN 18 THEN cast(substring(t1.id_number, 7, 8) AS DATE) ELSE cast(substring(t1.id_number, 7, 6) AS DATE) END, CURDATE() ) as age FROM app_party_develop t1