MySQL – datum a čas

V mnoha typech databází se časem setkáte s nutností uchovávat časové údaje či datum. V následujícím přehledu si proto společně ukážeme, jak s podobnými informacemi zacházet a správně je do určené tabulky ukládat. Začneme představením několika dostupných datových typů. Povšimněte si přitom, že se vyžaduje zachování formátu uvedeného v závorce:

  • DATE (YYYY-MM-DD)
  • DATETIME (YYYY-MM-DD HH:MM:SS)
  • TIMESTAMP (YYYY-MM-DD HH:MM:SS)
  • YEAR (YYYY)

Pakliže přemýšlíte co daná písmena znamenají, věřte, že se jedná o počáteční znak z anglického termínu. Y značí rok (year), písmeno M měsíc (month) a konečně D den (day). V případě času H znamená hodinu (hour) zatímco M minutu (minute). Jistě si již dokážete domyslet, že poslední nezmíněné S vzniklo ze slova second a symbolizuje sekundy.

Obzvláště zajímavé však jsou vestavěné funkce, kterými MySQL disponuje. NOW() například vrátí aktuální datum a čas. Vyzkoušejte si spustit podobný dotaz:

SELECT NOW();

Patrně bude vhodné poznamenat, že správnost vráceného výsledku záleží na nastavení daného serveru. Pokud konfigurace neodpovídá skutečnosti, musíte problém hledat právě na této straně.

V některých případech se vyplatí získat jen datum či čas. Toho dosáhneme dvěma funkcemi s podobným názvem – CURDATE() a CURTIME(). Ve své podstatě jde o rozdělenou návratovou hodnotu z NOW(). Užitečná se jeví i pomůcka DATE() schopná vypreparovat datum z celého časového údaje. Obsahuje-li například řádek hodnotu 2012-12-12 11:22:33 vrátí DATE() údaj 2012-12-12. Obdobně se chová i TIME(), pracuje však s časem.

Závěrem spatříte schopnost MySQL usnadnit zjištění počtů dní v určeném časovém intervalu. Funkce DATEDIFF() si v parametru vyžádá počáteční i koncové datum a následně vypočítá, kolik dvaceti čtyř hodinových jednotek se mezi nimi nachází. Vše názorně demonstruje následující dotaz, který přijde se správnou číslicí 1.

SELECT DATEDIFF(‚2012-12-13′,’2012-12-12′) AS pocet_dni;

O Ondřej Směták

Student, který se intenzivně zajímá o oblast IT a to především z pohledu webmastera a programátora GUI aplikací.