подсчет возраста людей - PullRequest
       4

подсчет возраста людей

0 голосов
/ 04 февраля 2019

У меня есть таблица с именем person, id, name, dob 3 столбца, пример данных приведен ниже:

INSERT INTO person(id,name,dob) VALUES
   (1,'Ton','1964-01-02'),
   (2,'Luck','1960-01-20').....

select
   name, dob,
   current_timestamp() as curren_date,
   timestampdiff(year, dob, curdate()) as age,
   timestampdiff(month, dob, curdate()) as age,
   timestampdiff(day, dob, curdate()) as age,
   date_format(dob, '%m'),
   month(curdate()),
   timestampdiff(month,  date_format(dob, '%m'),month(curdate())),
   DATEDIFF(dob, curdate()) AS DateDiff

from
    person

Так что я не знаю, что мне не хватает, приведенный выше код может рассчитать возраст в годах-я не очень точен, но в идеале я хочу вычислить возраст людей в году, месяце, днях, например, 55 лет 1 месяц 3 дня, а также рассчитать дату его следующего дня рождения, например, дату следующего дня рождения: 11 месяцев 10осталось дней и т. д.

Спасибо

1 Ответ

0 голосов
/ 04 февраля 2019

Вы можете точно рассчитать возраст в годах как:

select (case when date_format(dob, '%m-%d') >= date_format(now(), '%m-%d')
             then year(now()) - year(dob)
             else year(now()) - year(dob) - 1
        end)

Я считаю, что это обрабатывает все крайние случаи - например, високосные годы.Это точно подсчитывает возраст до дня.

Я никогда не был фанатом лет / месяцев / дней, потому что я думаю, что определение неясно.Вам нужно будет предоставить образец того, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...