Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie speichert man Geburtsdatum und Alter, damit das Alter täglich in PHP/MySQL aktualisiert werden kann?

Die einfache Antwort ist nicht; Speichern Sie niemals das Alter einer Person. Es ändert sich für jede Person jährlich, aber wie Sie sagen, müssen Sie täglich überprüfen, ob es für jede Person korrekt ist.

Nur das Geburtsdatum speichern und dann bei der Auswahl aus der Datenbank das Alter berechnen. Es ist erst today - date of birth nimmt also fast keine CPUs in Anspruch.

BEARBEITEN:

Um meinen Kommentar in Antwort von ManseUK zu erweitern Es besteht auch die Möglichkeit des Scheiterns. Was passiert, wenn Ihr Server / Ihre Datenbank ausfällt? Oder Ihr Update wird nicht zur angegebenen Zeit ausgeführt? Oder kommt jemand vorbei und führt es manuell aus, nachdem das Update bereits für dieses Datum ausgeführt wurde? Oder jemand schaltet Ihren Terminplaner aus? Es besteht keine Gefahr, dass dies passiert, wenn Sie Age berechnen wie Sie aus der Datenbank auswählen.

Zur Auswahl, wenn das Alter zwischen 25 und 30 Jahren liegt und eine DATE-Spalte dateofbirth angenommen wird Ihre Abfrage würde in etwa so lauten:

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

Stellen Sie users sicher wird auf dateofbirth indexiert .