mysql查询用于在mysql查询中以m / d / y格式计算dob的年龄

时间:2013-05-15 11:09:28

标签: mysql

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

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

但它似乎不起作用并将值返回为NULL。例如,dob就像12/5/1990,所以我想计算结果中的年龄。就像它会创建一个新列并在new_age

中显示计数结果一样

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

试试此代码

select *, YEAR(FROM_DAYS(DATEDIFF(NOW(), dob))) as age_new from users_profile

答案 2 :(得分: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无法读取其格式。

答案 3 :(得分:0)

以下查询适用于我:

SELECT TIMESTAMPDIFF(YEAR, '1983/12/5', CURRENT_DATE()) AS AGE