sql >> Databasteknik >  >> RDS >> Mysql

Hur lagrar man födelsedatum och ålder så att ålder kan uppdateras dagligen i PHP/MySQL?

Det enkla svaret är att inte göra det; lagra aldrig en persons ålder. Det ändras för varje person årligen men, som du säger, du måste kontrollera att det är korrekt för varje person dagligen.

Lagra endast födelsedatum och beräkna sedan åldern när du väljer från databasen. Det är bara today - date of birth så tar nästan inga processorer alls.

EDIT:

För att utöka min kommentar i ManseUKs svar det finns också risk för misslyckande. Vad händer om din server/databas är nere? Eller kan din uppdatering inte köras vid den angivna tidpunkten? Eller kommer någon och kör den manuellt efter att uppdateringen redan körts för det datumet? Eller stänger någon av din schemaläggare? Det finns ingen risk att detta händer om du beräknar Age som du väljer från databasen.

För att välja var åldern är mellan 25 och 30 år och förutsatt att kolumnen DATUM dateofbirth din fråga skulle vara något i stil med:

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

Se till att users indexeras på dateofbirth .



  1. Hur ADD_MONTHS() fungerar i MariaDB

  2. Hur man infogar rader i SQL Server Table genom att redigera tabellrader GUI - SQL Server / TSQL Tutorial Del 101

  3. pyodbc.connect() fungerar, men inte sqlalchemy.create_engine().connect()

  4. Exekvera flera SQL-frågor i en sats med PHP