sql >> Databáze >  >> RDS >> Mysql

Jak uložit datum narození a věk, aby bylo možné věk denně aktualizovat v PHP/MySQL?

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 .



  1. Hash připojte se k Oracle s příkladem

  2. Už žádné SPU

  3. Jak kombinovat GROUP BY, ORDER BY a HAVING

  4. Spouštěč MySQL pro kontrolu hodnot před vložením vícekrát