Как получить возраст из поля D.O.B в MySQL? - PullRequest
28 голосов
/ 28 марта 2010

Мне нужно рассчитать возраст «клиента» по дате его рождения.

Я пытался использовать следующее:

DATEDIFF (год, customer.dob, "2010-01-01");

Но, похоже, это не работает.

Есть идеи? Я ЗНАЮ, что это будет что-то простое!

Спасибо

Ответы [ 12 ]

0 голосов
/ 07 января 2014

Предполагается, что данная дата больше текущей даты,

1.Найдите общее количество дней ч / б текущую дату и данную дату.

-> DATEDIFF(NOW(),'1988-05-01')

2.Найдите число лет из рассчитанного количества дней.

-> DATEDIFF(NOW(),'1988-05-01')/365.25

3. Возраст должен быть задан человеком без указания лет. Чтобы получить его, мы можем использовать слово «пол» для рассчитанного количества лет.

-> FLOOR(DATEDIFF(NOW(),'1988-05-01')/365.25)

Пример: SELECT FLOOR(DATEDIFF(NOW(),'1988-05-01')/365.25) AS age;

0 голосов
/ 31 октября 2012

Это самое простое, что я мог придумать:

SELECT FLOOR(ABS(DATEDIFF(d, CURRENT_TIMESTAMP, dob))/365.25) AS age

Сначала мы получаем разницу в днях в днях, затем преобразуем ее в годы, а затем FLOOR усекает целую часть числа.

...