Более универсальный вариант 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
.
Комментарии
Это жестко!
Добавить комментарий