@atambalasi

Как вычислить полный возраст по дате рождения?

Есть таблица
5f5a4c4892a52910613410.png
Делаю запрос
SELECT
 id,
 birthday,   

 DATE_FORMAT(
        FROM_DAYS(
            DATEDIFF(str_to_date('14.09.20', '%d.%m.%y'),  str_to_date(birthday, '%d.%m.%y'))
        ),
        '%y Years %m Months %d Days'
    ) AS age
FROM children 
LIMIT 15;

Результат
5f5a4cc296e17110125474.png

Почему некоторые записи возраст выходит 0 ? Что не так ?
update:

SELECT
 id, 
 birthday,   
 str_to_date(birthday, '%d.%m.%y') as born,
 DATE_FORMAT(
        FROM_DAYS(
            DATEDIFF(str_to_date('14.09.20', '%d.%m.%y'),  str_to_date(birthday, '%d.%m.%y'))
        ),
        '%y Years %m Months %d Days'
    ) AS age
FROM children 
LIMIT 15;

5f5a506b46b8f219422214.png

Вроде дата парситься норм.
  • Вопрос задан
  • 2529 просмотров
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
ну ты ж видишь что не так где меньше года, разбирайся с функциями
Ответ написан
Комментировать
@Sumor
The FROM_DAYS() function is to be used only with dates within the Gregorian calendar.
В григорианском календаре нет нулевого года, поэтому даты меньше года не определяются.

Для определения возраста я находил разницу между годом рождения и текущим годом, прибавлял её к дате рождения (таким образом получал нужный мне промежуточный результат - день рождения в текущем году), и сравнивал полученную дату и текущую (для отнимания единички, если ДР ещё не было).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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