30.11.2012, Vladimír Klaus, navštíveno 9226x

MS Access
SQL

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

SQL obrázek

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())

SQL obrázek

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

SQL obrázek

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