You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于yyyymmdd格式编写查询计算用户当前年龄

基于yyyymmdd格式出生日期计算当前年龄的SQL查询语句

下面针对主流数据库给出对应的查询语句,自动计算截至今日的用户年龄,无需更新记录:

MySQL/MariaDB

使用STR_TO_DATE将字符串格式的出生日期转为日期类型,再通过TIMESTAMPDIFF直接计算年份差,自动处理生日是否已过的逻辑:

SELECT 
    birth_date,
    TIMESTAMPDIFF(YEAR, STR_TO_DATE(birth_date, '%Y%m%d'), CURDATE()) AS age
FROM your_table;

SQL Server

先通过CONVERT将yyyymmdd格式转为日期(格式码112对应该格式),计算年份差后,判断今年生日是否尚未到来,若未到则减1避免提前算一岁:

SELECT 
    birth_date,
    DATEDIFF(YEAR, CONVERT(DATE, birth_date, 112), GETDATE()) 
    - CASE WHEN DATEADD(YEAR, DATEDIFF(YEAR, CONVERT(DATE, birth_date, 112), GETDATE()), CONVERT(DATE, birth_date, 112)) > GETDATE() THEN 1 ELSE 0 END AS age
FROM your_table;

Oracle

用TO_DATE转换日期格式,通过MONTHS_BETWEEN计算月份差后除以12,再用TRUNC取整得到年龄:

SELECT 
    birth_date,
    TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE(birth_date, 'YYYYMMDD')) / 12) AS age
FROM your_table;

注意事项

  • 将语句中的your_table替换为实际的表名,birth_date替换为存储yyyymmdd格式出生日期的字段名
  • 以上语句均会在查询结果中新增age列,返回截至今日的准确年龄(比如19731026的记录会计算出对应当前日期的正确年龄)

内容的提问来源于stack exchange,提问作者Kyle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 16:27:37