Задавайте вопросы, мы ответим
Вы не зашли.
Есть табличка, в которой хранятся данные пользователей. Как можно, имея дату в формате 1984-05-12 (формат date), определить возраст пользователя?
Можно так YEAR(NOW()) - YEAR(users.birthdate) но в этом случае точность будет до года, т.е. возраст получаемый будет меняться только на новый год, а так не вычитается YEAR(NOW() - users.birthdate)
Неактивен
Всё - сам разобрался. Не слишком коротко, но зато работает:
IF(YEAR(users.birthdate)>0, YEAR(NOW())-YEAR(users.birthdate)-IF(DAYOFYEAR(NOW())<DAYOFYEAR(users.birthdate),1,0), '')
Неактивен
Еще посмотрите на функцию PERIOD_DIFF(), возможно, с ней проще.
Неактивен
PERIOD_DIFF возвращает разницу в месяцах между значениями времени в формате YYMM или YYYYMM, а надо чтобы получамое значение возраста менялось в день рождения пользователя. Кроме того, потом ещё надо будет месяцы в годы переводить.
Неактивен
Да, согласен, не подумал
Неактивен
Нашел такой вот расчет в одном справочном руководстве
SELECT birth, CURRENT_DATE, (YEAR(CURRENT_DATE)-YEAR(birth)) - (RIGHT(CURRENT_DATE,5)<RIGHT(birth,5)) AS age FROM table;
а впрочем тема довольно распространенная
Неактивен