我正在进行查询以获取存储在d/m/y
数据库中的用户的年龄。因为我已经厌倦了进行以下查询
select *,TIMESTAMPDIFF(YEAR, dob, now()) as age_new from users_profile
但它似乎不起作用并将值返回为NULL
。例如,dob就像12/5/1990
,所以我想计算结果中的年龄。就像它会创建一个新列并在new_age
答案 0 :(得分:1)
由于您的dob
字段不是date
或datetime
格式。我们需要转换它。
这是一个对我来说很好的查询。
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