Jednoduchá odpověď je ne; nikdy neuchovávejte věk osob. Každý rok se to mění u každé osoby, ale jak říkáte, musíte denně kontrolovat, zda je to správné pro každého.
Uložte pouze datum narození a věk pak vypočítejte při výběru z databáze. Je pouze today - date of birth
takže nezabere téměř žádné CPU.
EDIT:
Pro rozšíření mého komentáře v odpovědi ManseUK
existuje také možnost selhání. Co se stane, když váš server / databáze nefunguje? Nebo se vaše aktualizace nespustí v určený čas? Nebo někdo přijde a spustí to ručně poté, co aktualizace již byla pro toto datum spuštěna? Nebo vám někdo vypne plánovač? Pokud vypočítáte Age
, toto nebezpečí nehrozí jak vyberete z databáze.
Chcete-li vybrat, kde je věk mezi 25 a 30 lety, za předpokladu, že sloupec DATUM dateofbirth
váš dotaz by byl něco jako:
select *
from users
where dateofbirth between date_add( curdate(), interval -30 year )
and date_add( curdate(), interval -25 year )
Zajistěte users
je indexován na dateofbirth
.