sql >> Database >  >> RDS >> Mysql

Hoe de geboortedatum en leeftijd op te slaan zodat de leeftijd dagelijks kan worden bijgewerkt in PHP/MySQL?

Het simpele antwoord is niet doen; bewaar nooit een leeftijd van een persoon. Het verandert jaarlijks voor elke persoon, maar zoals u zegt, u moet dagelijks controleren of het voor elke persoon correct is.

Sla alleen de geboortedatum op en bereken vervolgens de leeftijd bij het selecteren uit de database. Het is pas today - date of birth dus er zijn bijna geen CPU's nodig.

BEWERKEN:

Om mijn opmerking in ManseUK's antwoord uit te breiden er is ook de mogelijkheid van falen. Wat gebeurt er als uw server/database down is? Of wordt uw update niet uitgevoerd op het opgegeven tijdstip? Of komt iemand langs en voert het handmatig uit nadat de update al voor die datum is uitgevoerd? Of zet iemand je planner uit? Er is geen gevaar dat dit gebeurt als u Age berekent zoals u uit de database selecteert.

Om te selecteren waar de leeftijd tussen 25 en 30 jaar ligt en uitgaande van een DATE-kolom dateofbirth uw vraag zou zoiets zijn als:

select *
  from users
 where dateofbirth between date_add( curdate(), interval -30 year )
                       and date_add( curdate(), interval -25 year )

Zorg ervoor dat users is geïndexeerd op dateofbirth .



  1. Doctrine2 ORM selecteren voor update

  2. Wat is de maximale grootte van VARCHAR2 in PL/SQL en SQL?

  3. MySQL-query IN()-clausule traag op geïndexeerde kolom

  4. Databasemodel voor een berichtensysteem