Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przechowywać datę urodzenia i wiek, aby wiek mógł być aktualizowany codziennie w PHP/MySQL?

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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zgrupować wiersze mysql o tej samej wartości kolumny w jeden wiersz?

  2. Czy należy używać wartości NULL lub pustego ciągu do reprezentowania żadnych danych w kolumnie tabeli?

  3. Jak uzyskać dostęp do obiektu RowDataPacket?

  4. Eksportuj dużą tabelę MySQL jako wiele mniejszych plików

  5. Jak wstawić moment JS do MySQL