xandeadx.ru Блог музицирующего веб-девелопера

MySQL → Вычислить возраст по дате рождения

Опубликовано в

Более универсальный вариант SQL запроса из официальной документации:

SELECT
  birthday,
  (
    (YEAR(CURRENT_DATE) - YEAR(birthday)) -                             /* step 1 */
    (DATE_FORMAT(CURRENT_DATE, '%m%d') < DATE_FORMAT(birthday, '%m%d')) /* step 2 */
  ) AS age
FROM users

Смысл следующий — первым шагом вычитаем из текущего года, год рождения, вторым шагом вычитаем единичку если дня рождения в этом году ещё не было.

birthday это поле с датой в любом валидном формате (не timestamp), например 1989-07-22 или даже 1989-07-22T00:00:00.

Добавлено 25.12.2012: в комментариях предложили более красивый вариант.

Похожие записи

Комментарии RSS

Школьные годы чудесные... :)

Угу

SELECT TIMESTAMPDIFF(YEAR,'1976-10-18',curdate()) old_player

ось і все)

@Ygor прекрасно :)

Всегда пожалуйста :)

Ygor, ваш код даёт неверный возраст. Вы, по всей видимости, просто вычитаете из текущего года год рождения, не учитывая месяцы и дни. Проверьте.

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании