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

Jak uložit datum v unixových milisekundách v Mysql?

ne. DateTime hodnoty by měly být uloženy jako DateTime , pokud nemáte opravdu dobrý důvod pro jejich uložení jinak (například pro podporu hodnot data a času mimo minimální/maximální hodnoty DateTime ), navrhoval bych nechat to v DateTime sloupec.

Vždy můžete manipulovat s tím, jak je vrátíte z databáze během Select nebo v prezentační vrstvě. Chcete-li vrátit unixový čas z DateTime , MySql poskytuje vestavěnou metodu nazvanou UNIX_TIMESTAMP . Chcete-li vrátit počet milisekund, jednoduše vynásobte 1000, protože časová značka unixu je počet sekund od 1. ledna 1970 (bez přestupných sekund). Pokud chcete uložit unixový čas, budete muset použít datový typ int.

Vezměte prosím na vědomí, že pokud ukládáte unixový čas namísto ukládání skutečného DateTime hodnotu v DateTime sloupec datového typu, ztratíte možnost snadno používat všechny databázové funkce zabudované v datech. Pokud například chcete zjistit, kolik řádků patří ke konkrétnímu měsíci, budete muset nejprve převést data z int do datetime a teprve potom to budete moci vypočítat.

Ztratíte také přesnost (protože unixový čas je nepřesný i při rozlišení 1 sekundy, protože ignoruje přestupné sekundy).

Takže na závěr – Když vám databáze nabídne datový typ, který odpovídá datům, neukládejte tato data pomocí jiného datového typu. použijte Date datový typ, pokud chcete ukládat pouze data, DateTime datový typ, pokud chcete uložit hodnoty datetime, a Time datový typ, pokud chcete uložit konkrétní čas dne.

P.S.
Při práci s hodnotami data a času, zejména pokud musíte jednat s klienty z více míst, VŽDY ukládejte do databáze pouze datumy UTC, pokud se ovšem nechcete zbláznit.




  1. Databáze vs tabulkový prostor, jaký je rozdíl?

  2. Jak mysql objednává řádky se stejnou hodnotou?

  3. Hibernate Named Query - připojte se ke 3 tabulkám

  4. Dotaz SQL vracející operand by měl obsahovat 1 sloupec (sloupce)