-
Vanligtvis bör du inte göra någotdera:datatyperna i databaslagret borde vara meningsfulla (som möjligt) på egen hand och inte vara beroende av din applikation för att tolka dem. Som @Jim DeLaHunt säger , detta gör det möjligt för databasen att enkelt manipulera/tolka dem från SQL efter behov (och gör det också möjligt för dig att enkelt komma åt samma data från en annan programkodbas i framtiden).
MySQL har fem tidstyper , av vilka endast två lagrar både ett datum och en tid:
DATETIME
ochTIMESTAMP
.Som andra har antytt beror skillnaden på om du vill lagra tidszonen - även om jag tycker att det är ett ganska förvirrande sätt att se på det:
-
TIMESTAMP
använder sessionenstime_zone
variabel för att konvertera indata till en UTC-tidsstämpel och sedan tillbaka igen för utdata:den är användbar för att ange ett exakt ögonblick i tiden; -
DATETIME
lagrar helt enkelt datum och tid utan hänsyn till tidszon, ungefär som att ta ett foto av en kalender och klocka:det är användbart för att specificera en händelse som inträffar i samma lokala tid globalt.
-
-
Precis som du skulle deklarera vilken annan kolumn som helst, anger du den relevanta datatypen efter kolumnnamnet.
Tänk på att
TIMESTAMP
har ytterligare funktioner, såsom automatisk uppdatering , som du kanske vill inaktivera i din kolumndeklaration om så önskas. -
Genom att använda en av ovanstående temporala typer kommer du att kunna göra allt detta (med datumfunktioner såsom krävs). Standardutgången för
TIMESTAMP
ochDATETIME
typer är en sträng i'YYYY-MM-DD HH:MM:SS'
format.I synnerhet kan den "förflutna tiden" från att jämföra två värden till exempel erhållas med MySQL:s
TIMEDIFF()
funktion:SELECT TIMEDIFF(end, start) AS elapsed FROM my_table WHERE ...