我具有关于datediff MYSQL功能的问题,我可以使用它,它是简单的。但我不知道如何使用它来收集表的字段中的差异。 E.g。

我有一个列dob,我想编写一个查询,会做类似

select dateDiff(current_timeStamp,dob) 
from sometable 'here dob is the table column

我的意思是欲从当前日期时间表字段dob的差,每个查询的结果是差,用户的年龄。

有帮助吗?

解决方案

您的意思是这样的吗?

SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), dob)), "%Y")+0 AS age from sometable

其他提示

您可以做到这一点。

SELECT TIMESTAMPDIFF(YEAR, date_of_birth, NOW()) ASageFROM 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;

注意:给D.O.B以正确的格式,例如YYYY-MM-DD'=> '1991-11-11

尝试这

SELECT DATEDIFF(CURDATE(), '2014-02-14');
select truncate(datediff(curdate(),dob)/365.25,0) from table;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top