# Mysql将出生年月日转换成年龄的方法

    技术2025-04-18  9

    Mysql 将出生年月日转换成年龄的方法

    方法一

    `SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(mydata)), '%Y')+0 AS age`

    不足之处:当日期大于当前日期时结果为0,非负数

    方法二

    SELECT DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(mydata, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(mydata, '00-%m-%d')) AS age

    解决非负问题,不足之处:很复杂

    方法三

    SELECT FLOOR(DATEDIFF(CURDATE(), mydata)/365.2422)

    取生日和当前日期之前的天数除以一年的实际天数(365天5小时48分46秒),然后取整

    以上差一天过生日时少一岁 方法四

    SELECT TIMESTAMPDIFF(YEAR, mydata, CURDATE())

    解决 不足差一天过生日少一岁问题

    方法五

    SELECT ROUND(DATEDIFF(CURDATE(), @birthday)/365.2422)

    这样计算出的年龄离实际的周岁最接近,但可能方法四是最符合年龄定义

    Processed: 0.009, SQL: 9