Nikdy nevíš, kdy to přijde
Zobrazit menu   MENU

24. Práce s datem a časem

Existuje několik způsobů jak v MySQL ukládat datum a čas a následně s ním pracovat. V různých případech se mohou hodit jiné datové typy, na které se nyní podíváme detailněji.

DATE

Datový typ DATE zabýrá v paměti 3bajty a má rozsah od 1. ledna roku 1000 do 31. prosince roku 9999. Datum je zde reprezentováno ve formátu YYYY-MM-DD, tedy například 2019-08-01 pro první srpen roku 2019. Jde o poměrně úsporný datový typ, který je vhodný pokud nepotřebujeme znát konkrétní čas v daném dni. Je také pěkně přehledný pro prohlížení více řádků například v PhpMyAdminu.

TIME

TIME je obdobný typ jako DATE, ale slouží k uložení pouze času ve formátu hh:mm:ss. Rozsah je od -838:59.59 do 838:59:59. Hodí se pokud chceme ukládat pouze čas v rámci dne, nikoliv informaci o dni, což není přiliš častá možnost.

DATETIME

Datový typ DATETIME je již podle názvu kombinací DATE a TIME. V paměti zabírá 8 bajtů a je reprezentován formátem YYYY-MM-DD hh:mm:ss. Rozsah tohoto typu je od 1000-01-01 00:00:00 do 999-12-31 23:59:59. Pomocí DATETIME tak můžeme uložit komplexní informaci o dni i času.

YEAR

YEAR slouží pouze u kládání informace o roce. Jde o úsporný typ, který zabírá jediný bajt a jehož rozsah je 1901 až 2155. Existují situace kdy je vhodné využít právě tento datový typ.

TIMESTAMP

TIMESTAMP neboli časová známka je speciální datový typ. Je obdobný jako DATETIME - zabírá stejné místo v paměti, je reprezentován stejným formátem a má stejný rozsah. Speciální ale na něm je to, pokud vytvoříme nový řádek v tabulce obsahující sloupec s tímto typem, bude do tohoto sloupce automaticky doplněno aktuální datum a čas. Taktéž při úpravě jakéhokoliv řádku, datum a čas se aktualizuje. Často se taková funkcionalita hodí a jde o výrazně snadnější variantu než se snažit aktualizovat údaj v našem programu.

INT

Poslední z možností jak ukládat datum a čas, od které se ale již delší dobu ustupuje, je uložit tvz. Unix Timestamp do celočíselného INT. Číslo pak reprezentuje počet sekund uběhnutých od 1.1.1970. Pomocí různých formátovacích funkcí pak lze toto datum vypisovat dle libovolného formátu. Nevýhodou je velká nepřehlednost, číslo 1567509956 Vám skutečně na první pohled neřekne o jaké jde datum. Na druhou stranu, existují situace kde se tato reprezentace dat dá vhodně využít při aritmetických operacích s datem nebo časem.


Funkce pro práci s datem a časem

Databáze MySQL nám poskytuje velké množství funkcí pro práci s datem a časem. Velká část z nich bude mít pravděpodobně svůj ekvivalent i v programovacím jazyce, který používáte. Je tak na Vašem zvážení, v která části aplikace je případně využít. Kompletní přehled funkcí naleznete v MySQL manuálu.


Další díly tutoriálu

22. Uživatelsky definované funkce
23. Větvení kódu - podmínky a cykly
24. Práce s datem a časem
25. Kódování řetezců