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;
相关推荐
Elastic 中国社区官方博客2 小时前
将你自己的密钥用于现有 Elastic Cloud 部署
大数据·数据库·elasticsearch·全文检索
红海云2 小时前
Jev:给智能系统做判断的模型
大数据·数据库·人工智能
wjkjpcba2 小时前
PCBA烧录程序是什么:PCBA包工包料厂家解析烧录与测试
linux·数据库·人工智能·smt贴片加工·pcba贴片加工厂
꯭自꯭闭꯭3 小时前
达梦事物特性及MVCC
linux·运维·数据库
小马同学-3 小时前
MySQL主从复制和读写分离
数据库·mysql
谢亮_vipxieliang3 小时前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
海绵宝宝转agent3 小时前
MySql高频面试八股开源笔记总结
mysql·面试·开源
geovindu4 小时前
sql: JSON and XML Data Handling in SQL using sql server 2025
大数据·数据库·sqlserver·数据库开发·数据库架构
IT大白鼠4 小时前
图数据库系列 · 第 02 篇——架构拆解:原生图存储到因果集群
数据库·架构·nosql
余槐i5 小时前
数据没回滚也不报错:@Transactional 自调用失效的 3 种复现与修复
spring boot·mysql·多线程·spring 事务