MySQL и PHP: Вычисление возраста (количество лет) по дате рождения

MySQL и PHP: Вычисление возраста (количество лет) по дате рождения MySQL и PHP: Вычисление возраста (количество лет) по дате рождения

Для биографий полезно автоматическое вычисление возраста по дате рождения (birthday), причём если личности уже нет в живых, то вводим дату смерти (deathday). Для живых она будет NULL или "0000-00-00". И возраст вычисляется используя сегодняшнюю дату

$diff = abs(time()-strtotime($model->birthday)); 
$years = floor($diff / (365*60*60*24));
Если указана дата смерти, то 
$diff = abs(strtotime($model->deathday) - strtotime($model->birthday)); 
$years = floor($diff / (365*60*60*24));

Для MySQL используем функцию FLOOR() - она отсекает дробную часть от числа.

То есть при запросе будет

SELECT last_name, first_name, birth, death, FLOOR((TO_DAYS(death) - TO_DAYS(birth)) / 365) AS age
FROM biographies WHERE death
IS NOT NULL
ORDER BY age DESC LIMIT 5;

или так

(YEAR(death) - YEAR(birth) - IF(RIGHT(death,5)<RIGHT(birth,5)),1,0) AS age

 

Источник: loco.ru

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (0)     Подпишитесь на RSS комментариев к этой статье.