如何再次计算年龄条件?我只希望所有用户的年龄<50 岁
我的查询在没有 where 条件的情况下工作正常,但是当我添加WHERE age < 50
时,它会给我一个错误#1054 - Unknown column 'age' in 'where clause'
SELECT u.*, YEAR(CURRENT_TIMESTAMP) - YEAR(u.user_dob) - (RIGHT(CURRENT_TIMESTAMP, 5) <
RIGHT(u.user_dob, 5)) as age FROM tbl_users as u WHERE age < 50
像这样更简单的东西怎么样?
where dob >= date_sub(curdate(), interval 50 year)
如果你想要年龄,你可以取年差
:select timestampdiff(year, dob, curdate())
用这个更新你的年龄在where子句中:
YEAR(CURRENT_TIMESTAMP) - YEAR(u.user_dob) - (
RIGHT(CURRENT_TIMESTAMP, 5) <
RIGHT(u.user_dob, 5))
成为:
SELECT u.*, YEAR(CURRENT_TIMESTAMP) - YEAR(u.user_dob) - (
RIGHT(CURRENT_TIMESTAMP, 5) <
RIGHT(u.user_dob, 5)) AS age
FROM tbl_users AS u
WHERE YEAR(CURRENT_TIMESTAMP) - YEAR(u.user_dob) - (
RIGHT(CURRENT_TIMESTAMP, 5) <
RIGHT(u.user_dob, 5)) < 50