Расчет возраста от даты рождения с условием где возраст в MySQL

Как рассчитать возраст, где условие на возраст снова? Я хочу, чтобы все пользователи только в возрасте < 50 лет

Мой запрос работает нормально без условия где, но когда я добавляю 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 

2 ответа

Решение

Как насчет чего-то попроще?

where dob >= date_sub(curdate(), interval 50 year)

Если вы хотите возраст, вы можете взять разницу в годах:

select timestampdiff(year, dob, curdate())

Обновите свой возраст, где пункт с этим:

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
Другие вопросы по тегам