Определение возраста по дате рождения в MySQL

Определить возраст любого из пользователей в базе данных MySQL ее же средствами можно достаточно просто , если вычислить разницу между текущим годом и годом его рождения, а из результата вычесть единицу, если текущий день находится к началу календаря ближе, нежели день рождения юзера.

Приведенный ниже запрос выводит имя, дату рождения каждого пользователя и его возраст.


SELECT 
	`name`, 
	`birth`,
	(YEAR(CURRENT_DATE)-YEAR(`birth`))-(RIGHT(CURRENT_DATE,5)<RIGHT(`birth`,5)
	) AS `age`
FROM `users`
ORDER BY `name`;

В этом запросе функция YEAR() выделяет из даты год, а RIGHT() — пять крайних справа символов, представляющих календарный день (MM-DD). Часть выражения, сравнивающая даты, выдает 1 или 0, что позволяет уменьшить результат на единицу, если текущий день (CURRENT_DATE) находится к началу календаря ближе, нежели день рождения пользователя.

Все выражение смотрится несколько неуклюже, поэтому вместо него в заголовке соответствующего столбца результатов выводится псевдоним (age — «возраст»).

Изначально таблица users в MySQL имеет такой вид:

id name birth
1 Кобзарев Михаил Николаевич 1986-01-04
2 Иванов Иван Иванович 1955-12-12
n Пупкин Василий Петрович 1856-03-29

Ссылки

Источник: https://www.kobzarev.com/programming/determination-of-age-by-date-of-birth-in-mysql/

Михаил Кобзарёв

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все. Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса. Ведет блог о разработке, дайджест в телеграмме и в ВК. Любит сиськи, баню и радиоэлектронику. 100% патриот (но это не точно). Тролль 542 уровня. Ездит в отпуск раз в 5 лет.

Добавить комментарий

%d такие блоггеры, как: