MySQL中基于dd/mm/yyyy格式DOB结合GETDATE()计算年龄的方法
解决方案
前提说明
你提到的GETDATE()是SQL Server的内置取当前时间函数,以下解法默认基于SQL Server环境,其他数据库的适配方案会额外说明。
核心逻辑
- 字符串转日期:使用
CONVERT函数,指定格式码103适配dd/mm/yyyy的日期字符串格式 - 周岁计算:先取两个日期的年份差,再判断当年生日是否已过,未过则年份差减1,避免虚岁误差
完整查询语句
SELECT ID, Name, -- 计算周岁逻辑 DATEDIFF(YEAR, CONVERT(DATE, DOB, 103), GETDATE()) - CASE WHEN DATEADD(YEAR, DATEDIFF(YEAR, CONVERT(DATE, DOB, 103), GETDATE()), CONVERT(DATE, DOB, 103)) > GETDATE() THEN 1 ELSE 0 END AS AGE, DOB FROM 替换为你的实际表名;
其他数据库适配(可选)
如果是MySQL环境,可以使用自带的周岁计算函数简化逻辑:
SELECT ID, Name, TIMESTAMPDIFF(YEAR, STR_TO_DATE(DOB, '%d/%m/%Y'), CURDATE()) AS AGE, DOB FROM 替换为你的实际表名;
内容的提问来源于stack exchange,提问作者user3079
相关产品推荐
相关产品推荐

