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

8
задан HaveNoDisplayName 19 March 2015 в 17:39
поделиться

3 ответа

Вы имеете в виду вот так?

SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), dob)), "%Y")+0 AS age from sometable

( Источник )

20
ответ дан 5 December 2019 в 05:26
поделиться

Если вы хотите, чтобы для каждого пользователя отображался возраст в годах, выполните

select name,extract(year from (from_days(dateDiff(current_timestamp,dob)))) 
       from sometable;
1
ответ дан 5 December 2019 в 05:26
поделиться

Если я понимаю ваши комментарии к предыдущим ответам, столбец даты рождения будет на самом деле не значение 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;
1
ответ дан 5 December 2019 в 05:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: