Вычисляем возраст согласно дате в MySQL

Если перед вами встанет задача вычисления возраста пользователя по дате его рождения непосредственно в MySQL, то в данной статье вы найдёте готовое решение.

В недрах сети было найдено решение. Мы его немного подлатали, убрали избыточные конвертации и обернули в функцию, которую можно использовать в дальнейшем.

CREATE FUNCTION `get_age` (
  `date_of_birth` DATE,
  `current_time` DATETIME
) RETURNS INT(11) UNSIGNED COMMENT 'Calculates the age from the date of birth' DETERMINISTIC NO SQL SQL SECURITY DEFINER
RETURN ((YEAR(current_time) - YEAR(date_of_birth)) - ((DATE_FORMAT(current_time, '00-%m-%d') < DATE_FORMAT(date_of_birth, '00-%m-%d'))));

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

Использовать данную функцию можно следующим образом.

SELECT get_age(date_of_birth, NOW()) AS age
FROM person
WHERE id = 123

Вот и всё! Данные типа DATE превращаются в возраст.

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: http://codingexplained.com/databases/mysql/calculate-age-from-date-of-birth-in-mysql
Перевел: Станислав Протасевич
Урок создан: 30 Апреля 2015
Просмотров: 6276
Правила перепечатки


5 последних уроков рубрики "Разное"

^ Наверх ^