Простой ответ - нет; никогда не храните возраст людей. Он меняется для каждого человека в год, но, как вы говорите, вы должны ежедневно проверять, правильно ли он для каждого человека.
Сохраните только дату рождения, а затем рассчитайте возраст при выборе из базы данных. Это всего лишь today - date of birth
, поэтому он почти не требует процессоров.
EDIT:
Чтобы расширить мой комментарий в Ответ ManseUK , также существует вероятность отказа. Что произойдет, если ваш сервер / база данных не работает? Или ваше обновление не запускается в указанное время? Или кто-то приходит и запускает его вручную после того, как обновление уже было запущено на эту дату? Или кто-то выключает ваш планировщик? Нет никакой опасности того, что это произойдет, если вы подсчитаете Age
при выборе из базы данных.
Чтобы выбрать возраст от 25 до 30 лет и предположить столбец ДАТА dateofbirth
, ваш запрос будет выглядеть примерно так:
select *
from users
where dateofbirth between date_add( curdate(), interval -30 year )
and date_add( curdate(), interval -25 year )
Убедитесь, что users
проиндексирован на dateofbirth
.