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

Jak najlepiej przechowywać datę/godzinę w MySql?

  1. Zazwyczaj nie należy tego robić:typy danych w warstwie bazy danych powinny być znaczące (jak to możliwe) same w sobie i nie powinny zależeć od aplikacji, która je interpretuje. Jak mówi @Jim DeLaHunt , umożliwia to bazie danych łatwe manipulowanie nimi/interpretowanie ich z poziomu SQL zgodnie z wymaganiami (a także umożliwia łatwy dostęp do tych samych danych z innej bazy kodu aplikacji w przyszłości).

    MySQL ma pięć typów tymczasowych , tylko dwa z nich przechowują zarówno datę, jak i godzinę:DATETIME i TIMESTAMP .

    Jak wspomnieli inni, różnica sprowadza się do tego, czy chcesz przechowywać strefę czasową – chociaż uważam, że jest to dość mylący sposób patrzenia na to:

    • TIMESTAMP używa time_zone zmienna do konwersji danych wejściowych na znacznik czasu UTC, a następnie z powrotem do danych wyjściowych:jest przydatna do określenia dokładnego momentu w czasie;

    • DATETIME po prostu przechowuje datę i godzinę bez względu na strefę czasową, podobnie jak robienie zdjęcia kalendarza i zegara:jest to przydatne do określenia zdarzenia, które ma miejsce globalnie w tym samym czasie lokalnym.

  2. Tak jak w przypadku każdej innej kolumny, po nazwie kolumny określasz odpowiedni typ danych.

    Uważaj, że TIMESTAMP ma dodatkowe funkcje, takie jak automatyczna aktualizacja , które w razie potrzeby możesz wyłączyć w deklaracji kolumny.

  3. Korzystając z jednego z powyższych typów tymczasowych, będziesz mógł to wszystko zrobić (używając funkcje daty jako wymagane). Domyślne wyjście TIMESTAMP i DATETIME typy to ciąg znaków w 'YYYY-MM-DD HH:MM:SS' format.

    W szczególności „czas, który upłynął” z porównania dwóch wartości, można na przykład uzyskać za pomocą TIMEDIFF() funkcja:

    SELECT TIMEDIFF(end, start) AS elapsed
    FROM   my_table
    WHERE  ...
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Autoinkrementacja MySQL między tabelami

  2. Jak sprawdzić, czy zapytanie DELETE naprawdę usuwa wiersz, używając PDO?

  3. Neo4j - Usuń węzeł za pomocą Cypher

  4. PHP Nie wybrano bazy danych

  5. MySQL z C#, z punktu widzenia programisty PHP