sql >> Databáze >  >> RDS >> Mysql

Jak nejlépe uložit datum/čas v MySql?

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

    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.

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

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


  1. SQLRecoverableException:I/O Exception:Reset připojení

  2. Dotaz nevrací výsledky podle očekávání

  3. Co je SQL Operations Studio (SQLOPS)?

  4. Mysql Počítání po sobě jdoucích řádků, které se shodují