sql >> Database teknologi >  >> RDS >> Mysql

Hvordan gemmer man fødselsdato og alder, så alder kan opdateres dagligt i PHP/MySQL?

Det enkle svar er ikke; gem aldrig en persons alder. Det ændrer sig for hver person årligt, men som du siger, skal du kontrollere, at det er korrekt for hver person dagligt.

Gem kun fødselsdatoen, og beregn derefter alderen, når du vælger fra databasen. Det er kun today - date of birth så tager næsten ingen CPU'er overhovedet.

EDIT:

For at udvide min kommentar i ManseUKs svar der er også mulighed for fiasko. Hvad sker der, hvis din server/database er nede? Eller kører din opdatering ikke på det angivne tidspunkt? Eller kommer der nogen og kører det manuelt, efter at opdateringen allerede er kørt for den dato? Eller slukker nogen din skemalægger? Der er ingen fare for, at dette sker, hvis du beregner Age som du vælger fra databasen.

For at vælge, hvor alderen er mellem 25 og 30 år og forudsat at kolonnen DATO dateofbirth din forespørgsel ville være noget i stil med:

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

Sørg for users er indekseret på dateofbirth .



  1. Sikkerhedskopier dine MySQL-databaser

  2. Hvordan kalder jeg en lagret procedure med argumenter ved hjælp af sqlcmd.exe?

  3. at vælge unikke værdier fra en kolonne

  4. Er indre led det samme som equi-join?