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

Come memorizzare data di nascita ed età in modo che l'età possa essere aggiornata quotidianamente in PHP/MySQL?

La semplice risposta è no; non conservare mai l'età di una persona. Cambia per ogni persona ogni anno ma, come dici tu, devi controllare che sia corretto per ogni persona ogni giorno.

Memorizzare solo la data di nascita, quindi calcolare l'età quando si seleziona dal database. È solo today - date of birth quindi non richiede quasi nessuna CPU.

MODIFICA:

Per approfondire il mio commento nella risposta di ManseUK c'è anche la possibilità di fallire. Cosa succede se il tuo server/database è inattivo? O il tuo aggiornamento non viene eseguito all'ora specificata? O qualcuno arriva e lo esegue manualmente dopo che l'aggiornamento è già stato eseguito per quella data? O qualcuno disattiva il tuo scheduler? Non c'è pericolo che ciò accada se calcoli Age mentre selezioni dal database.

Per selezionare dove l'età è compresa tra 25 e 30 anni e assumendo una colonna DATE dateofbirth la tua richiesta sarebbe qualcosa del tipo:

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

Assicurati users è indicizzato su dateofbirth .