sql >> Databasteknik >  >> RDS >> Mysql

Hur lagrar man bäst datum/tid i MySql?

  1. 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 och TIMESTAMP .

    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 sessionens time_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.

  2. 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.

  3. 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 och DATETIME 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  ...
    


  1. Använda aggregerade funktioner i SQL-fråga

  2. 504 Gateway Timeout-fel vid val av 300 000 rader från MySQL-databas

  3. Proaktiva SQL Server Health Checks, Del 4:ERRORLOG

  4. Kan inte hitta rubriken 'libpq-fe.h när du försöker installera pg gem