Вы имеете в виду вот так?
SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), dob)), "%Y")+0 AS age from sometable
( Источник )
Если вы хотите, чтобы для каждого пользователя отображался возраст в годах, выполните
select name,extract(year from (from_days(dateDiff(current_timestamp,dob))))
from sometable;
Если я понимаю ваши комментарии к предыдущим ответам, столбец даты рождения будет на самом деле не значение DATE
, а строка в формате m / d / y. Я настоятельно рекомендую вам изменить это; это замедляет любые вычисления даты, которые вы хотите выполнить, и вы рискуете ввести неверные значения даты в столбец.
Я думаю, что это то, что вам нужно. Он использует функцию STR_TO_DATE ()
и алгоритм для вычисления возраста из документации MySQL:
SELECT YEAR(CURDATE()) - YEAR(STR_TO_DATE(dob, '%m/%d/%Y'))
- (RIGHT(CURDATE(), 5) < RIGHT(STR_TO_DATE(dob, '%m/%d/%Y'), 5)) AS age
FROM sometable;