我正在查询以获取存储d/m/y
在数据库中的用户年龄。为此,我已经厌倦了以下查询
select *,TIMESTAMPDIFF(YEAR, dob, now()) as age_new from users_profile
但它似乎不起作用并将值返回为NULL
. 例如的出生日期就像12/5/1990
所以我想计算结果中的年龄。就像它会创建一个新列并在里面显示计数结果 new_age
我正在查询以获取存储d/m/y
在数据库中的用户年龄。为此,我已经厌倦了以下查询
select *,TIMESTAMPDIFF(YEAR, dob, now()) as age_new from users_profile
但它似乎不起作用并将值返回为NULL
. 例如的出生日期就像12/5/1990
所以我想计算结果中的年龄。就像它会创建一个新列并在里面显示计数结果 new_age
由于您的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
下面的查询对我有用:
SELECT TIMESTAMPDIFF(YEAR, '1983/12/5', CURRENT_DATE()) AS AGE
试试这个代码
select *, YEAR(FROM_DAYS(DATEDIFF(NOW(), dob))) as age_new from users_profile
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 无法读取其格式。