30.11.2012, Vladimír Klaus, navštíveno 9226x
Velmi užitečná funkce, pomocí které můžeme pracovat s jednotlivými částmi data.
Začneme něčím jednoduchým – výpisem dnů, kdy byly vytvořeny objednávky. Funkce má dva parametry – prvním určujeme časový interval (co chceme získat) a druhým parametrem je hodnota (odkud to chceme získat), tedy třeba název sloupce.
SELECT DATEPART("d", Datum) AS Den FROM Objednavky
Jaké existují možnosti pro zadání časového intervalu?
- d – den
- m – měsíc
- yyyy – rok
- h – hodina
- n – minuta
- s – vteřina
- q - čtvrtletí
- y – den v roce
- w – den v týdnu (1 = neděle, 2 = pondělí … 7 = sobota)
- ww – týden v roce
Poznámka: Funkce DATEPART je ještě složitější, ale to už by bylo nad rámec tohoto textu.
Představme si, že máme zjistit, jaké jsou letošní objednávky. A tento dotaz musí fungovat i kdykoliv v budoucnosti, proto do dotazu nemůžeme zadat přímo konkrétní rok. Využijeme opět funkce na zjištění části data, ale také funkci Now(), která nám vrací aktuální datum a čas. Alternativou je pro tento případ použití funkce Date(), která vrací pouze aktuální datum.
SELECT * FROM Objednavky
WHERE DATEPART("yyyy", Datum) = DATEPART("yyyy", Now())
Posledním příkladem bude dotaz, díky kterému zjistíme, které objednávky byly realizovány během víkendů. Do podmínky tedy zadáme porovnání na sobotu a neděli (čísla 7 a 1) a pro větší přehlednost si toto pořadí přidáme i přímo do SELECTu, takže ve výsledné tabulce hned i vidíme, které z nich byly v jaký den realizovány.
SELECT *, DATEPART("w", Datum) AS Den FROM Objednavky
WHERE DATEPART("w", Datum) = 1 OR DATEPART("w", Datum) = 7
V jiných databázích
V SQL Serveru se tato funkce jmenuje EXTRACT a používá se trochu jiný zápis.
SELECT EXTRACT(DAY FROM Datum) AS Den FROM Objednavky