Prosta odpowiedź brzmi:nie; nigdy nie przechowuj osób w wieku. Zmienia się dla każdej osoby co roku, ale, jak mówisz, musisz codziennie sprawdzać, czy jest odpowiedni dla każdej osoby.
Przechowuj tylko datę urodzenia, a następnie oblicz wiek podczas wybierania z bazy danych. To dopiero today - date of birth
więc nie wymaga prawie żadnych procesorów.
EDYCJA:
Aby rozwinąć mój komentarz w odpowiedzi ManseUK
istnieje również możliwość niepowodzenia. Co się stanie, jeśli Twój serwer/baza danych przestanie działać? A może Twoja aktualizacja nie uruchamia się w określonym czasie? A może ktoś przychodzi i uruchamia go ręcznie po tym, jak aktualizacja została już uruchomiona dla tej daty? A może ktoś wyłączy twój harmonogram? Nie ma niebezpieczeństwa, że tak się stanie, jeśli obliczysz Age
jak wybierzesz z bazy danych.
Aby wybrać, gdzie wiek wynosi od 25 do 30 lat i zakładając kolumnę DATE dateofbirth
Twoje zapytanie będzie wyglądało tak:
select *
from users
where dateofbirth between date_add( curdate(), interval -30 year )
and date_add( curdate(), interval -25 year )
Upewnij się, że users
jest indeksowany dateofbirth
.