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
)
这样计算出的年龄离实际的周岁最接近,但可能方法四是最符合年龄定义
转载请注明原文地址:https://ipadbbs.8miu.com/read-56262.html