Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment stocker la date de naissance et l'âge afin que l'âge puisse être mis à jour quotidiennement en PHP/MySQL ?

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 .