0

我正在查询以获取存储d/m/y在数据库中的用户年龄。为此,我已经厌倦了以下查询

select *,TIMESTAMPDIFF(YEAR, dob, now()) as age_new from users_profile

但它似乎不起作用并将值返回为NULL. 例如的出生日期就像12/5/1990所以我想计算结果中的年龄。就像它会创建一个新列并在里面显示计数结果 new_age

4

4 回答 4

1

由于您的dob字段不是格式datedatetime格式。我们需要转换它。

这是对我来说很好的查询。

SELECT YEAR(FROM_DAYS(DATEDIFF(NOW(), STR_TO_DATE('12/5/1990', '%d/%m/%Y')))) AS age_new

或者您的查询将是:

SELECT YEAR(FROM_DAYS(DATEDIFF(NOW(), STR_TO_DATE(dob, '%d/%m/%Y')))) AS age_new from users_profile

于 2013-05-15T11:36:06.777 回答
0

下面的查询对我有用:

SELECT TIMESTAMPDIFF(YEAR, '1983/12/5', CURRENT_DATE()) AS AGE
于 2013-05-15T11:30:38.140 回答
0

试试这个代码

select *, YEAR(FROM_DAYS(DATEDIFF(NOW(), dob))) as age_new from users_profile
于 2013-05-15T11:15:31.450 回答
0
select *, 
DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(dob, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(dob, '00-%m-%d')) as age_new from users_profile

看起来要么dob不是date类型,要么 mysql 无法读取其格式。

于 2013-05-15T11:17:57.107 回答