Расчет возраста от даты рождения с условием где возраст в 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