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
.