-
Obvykle byste neměli dělat ani jedno:datové typy v databázové vrstvě by měly být smysluplné (jak je to možné) samy o sobě a neměly by záviset na vaší aplikaci, aby je interpretovala. Jak říká @Jim DeLaHunt , to umožňuje databázi snadno s nimi manipulovat/interpretovat je z SQL podle potřeby (a také vám v budoucnu umožní snadný přístup ke stejným datům z jiné kódové základny aplikace).
MySQL má pět dočasných typů , z nichž pouze dva ukládají datum i čas:
DATETIME
aTIMESTAMP
.Jak uvedli jiní, rozdíl spočívá v tom, zda chcete uložit časové pásmo - i když to považuji za docela matoucí způsob, jak se na to dívat:
-
TIMESTAMP
používátime_zone
relace proměnná pro převod vstupu na časové razítko UTC a poté zpět na výstup:je to užitečné pro specifikaci přesného okamžiku v čase; -
DATETIME
jednoduše ukládá datum a čas bez ohledu na časové pásmo, podobně jako pořízení fotografie kalendáře a hodin:je to užitečné pro určení události, která se globálně odehraje ve stejném místním čase.
-
-
Stejně jako byste deklarovali jakýkoli jiný sloupec, za názvem sloupce zadáte příslušný datový typ.
Pozor,
TIMESTAMP
má další funkce, jako je automatická aktualizace , kterou můžete v případě potřeby deaktivovat v deklaraci sloupců. -
Pomocí jednoho z výše uvedených dočasných typů budete moci toto vše provést (pomocí funkce data podle potřeby). Výchozí výstup
TIMESTAMP
aDATETIME
type je řetězec v'YYYY-MM-DD HH:MM:SS'
formát.Konkrétně „uplynulý čas“ z porovnání dvou hodnot lze například získat pomocí
TIMEDIFF()
funkce:SELECT TIMEDIFF(end, start) AS elapsed FROM my_table WHERE ...