SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 04.10.2007 02:39:06

Babutta
Участник
Откуда: Балашиха
Зарегистрирован: 21.09.2007
Сообщений: 19

Вычитание дат (вычисление возраста)

Есть табличка, в которой хранятся данные пользователей. Как можно, имея дату в формате 1984-05-12 (формат date), определить возраст пользователя?
Можно так YEAR(NOW()) - YEAR(users.birthdate) но в этом случае точность будет до года, т.е. возраст получаемый будет меняться только на новый год, а так не вычитается YEAR(NOW() - users.birthdate)

Неактивен

 

#2 04.10.2007 02:52:10

Babutta
Участник
Откуда: Балашиха
Зарегистрирован: 21.09.2007
Сообщений: 19

Re: Вычитание дат (вычисление возраста)

Всё - сам разобрался. Не слишком коротко, но зато работает:
IF(YEAR(users.birthdate)>0, YEAR(NOW())-YEAR(users.birthdate)-IF(DAYOFYEAR(NOW())<DAYOFYEAR(users.birthdate),1,0), '')

Неактивен

 

#3 04.10.2007 11:16:12

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Вычитание дат (вычисление возраста)

Еще посмотрите на функцию PERIOD_DIFF(), возможно, с ней проще.

Неактивен

 

#4 04.10.2007 17:55:49

Babutta
Участник
Откуда: Балашиха
Зарегистрирован: 21.09.2007
Сообщений: 19

Re: Вычитание дат (вычисление возраста)

PERIOD_DIFF возвращает разницу в месяцах между значениями времени в формате YYMM или YYYYMM, а надо чтобы получамое значение возраста менялось в день рождения пользователя. Кроме того, потом ещё надо будет месяцы в годы переводить.

Неактивен

 

#5 04.10.2007 18:07:23

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Вычитание дат (вычисление возраста)

Да, согласен, не подумал smile

Неактивен

 

#6 09.05.2009 16:51:22

Koss
Участник
Зарегистрирован: 09.05.2009
Сообщений: 1

Re: Вычитание дат (вычисление возраста)

Нашел такой вот расчет в одном справочном руководстве
SELECT birth, CURRENT_DATE, (YEAR(CURRENT_DATE)-YEAR(birth)) - (RIGHT(CURRENT_DATE,5)<RIGHT(birth,5)) AS age FROM table;
а впрочем тема довольно распространенная

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson