中国大陆的18位身份证号码中第7到第14位表示出生日期,格式为 YYYYMMDD。
提取并转换为 DATE 类型:
SELECT
id_card,
STR_TO_DATE(SUBSTRING(id_card, 7, 8), '%Y%m%d') AS birth_date
FROM users;
在 MySQL 中,从身份证号提取出生日期后计算当前年龄(整岁),最推荐、最准确的方式是使用 TIMESTAMPDIFF() 函数,它能精确处理闰年、月份天数差异等问题。
计算年龄:
SELECT
TIMESTAMPDIFF(YEAR,
STR_TO_DATE(SUBSTRING(id_card, 7, 8), '%Y%m%d'),
CURDATE()
) AS age
FROM your_table;