La réponse simple est non ; ne stockez jamais l'âge d'une personne. Cela change pour chaque personne chaque année mais, comme vous le dites, vous devez vérifier qu'il est correct pour chaque personne chaque jour.
Ne stockez que la date de naissance, puis calculez l'âge lors de la sélection dans la base de données. C'est seulement today - date of birth
donc ne prend presque pas de CPU du tout.
MODIFIER :
Pour développer mon commentaire dans la réponse de ManseUK
il y a aussi la possibilité d'un échec. Que se passe-t-il si votre serveur/base de données est en panne ? Ou votre mise à jour ne s'exécute pas à l'heure indiquée ? Ou quelqu'un arrive et l'exécute manuellement après que la mise à jour a déjà été exécutée à cette date ? Ou quelqu'un a désactivé votre programmateur ? Il n'y a aucun risque que cela se produise si vous calculez Age
que vous sélectionnez dans la base de données.
Pour sélectionner où l'âge est compris entre 25 et 30 ans et en supposant une colonne DATE dateofbirth
votre requête serait quelque chose comme :
select *
from users
where dateofbirth between date_add( curdate(), interval -30 year )
and date_add( curdate(), interval -25 year )
Assurez-vous que les users
est indexé sur dateofbirth
.