MySQL根据身份证号码计算出生日期和年龄

中国大陆的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;
相关推荐
tedcloud1236 小时前
cc-switch评测:多AI Coding Agent管理工具详解
数据库·人工智能·sql·学习·自动化
土狗TuGou6 小时前
SQL内功笔记 · 第8篇:事务的四大特性与隔离级别
数据库·笔记·后端·sql·mysql·oracle
流星白龙6 小时前
【MySQL高阶】10.MySQL架构,连接层服务层
mysql
Nturmoils7 小时前
一台 2C2G 服务器上的 KingbaseES 安装记录
数据库
木头程序员7 小时前
SSM框架学习笔记
java·开发语言·mysql·spring·maven
SelectDB8 小时前
从 Machine-Readable 到 Agent-Ready:面向智能体的数据库接口演进
大数据·数据库·agent
画江湖Test8 小时前
Redis 块的原理
数据库·redis·缓存·性能优化
流烟默8 小时前
国产数据库CERDB是什么以及服务启停
数据库·cerdb
数据库小学妹8 小时前
关系型数据库核心原理拆解:SQL解析、事务引擎、存储结构全链路分析
数据库·经验分享·sql·数据库架构·dba
海市公约8 小时前
Redis主从复制全量同步七步时序与命令传播机制详解
数据库·redis·缓存·主从复制·高可用架构·全量同步