我有一个关于datediff
MYSQL函数的问题,我可以使用它,它很简单。但我不明白如何使用它来收集表字段中的差异。例如
我有一个专栏dob
,我想写一个查询来做类似的事情
select dateDiff(current_timeStamp,dob)
from sometable 'here dob is the table column
我的意思是我想要从当前日期时间到表字段dob
的差异,每个查询结果都是差异,用户的年龄。
你可以这样做
SELECT TIMESTAMPDIFF(YEAR, date_of_birth, NOW()) AS
年龄FROM your_table
每次都有效。
如果你想,对于每个用户,显示年龄,做
select name,extract(year from (from_days(dateDiff(current_timestamp,dob))))
from sometable;
如果我理解您对先前答案的评论,那么出生日期列实际上不是一个DATE
值,而是一个格式为 m/d/y 的字符串。我强烈建议您更改此设置;它会减慢您想要执行的任何日期计算,并且您可能会在列中输入无效的日期值。
我认为这就是你所需要的。它使用STR_TO_DATE()
MySQL 文档中的函数和算法来计算年龄:
SELECT YEAR(CURDATE()) - YEAR(STR_TO_DATE(dob, '%m/%d/%Y'))
- (RIGHT(CURDATE(), 5) < RIGHT(STR_TO_DATE(dob, '%m/%d/%Y'), 5)) AS age
FROM sometable;
我认为这应该有帮助
SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(now()) - TO_DAYS(@dateofbirth)), '%Y') + 0;
注意:以正确的格式提供 DOB,例如YYYY-MM-DD'=> '1991-11-11
试试这个
SELECT DATEDIFF(CURDATE(), '2014-02-14');
select truncate(datediff(curdate(),dob)/365.25,0) from table;