-
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
iTIMESTAMP
.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żywatime_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.
-
-
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. -
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
iDATETIME
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 ...