V MariaDB, DAYOFWEEK()
je vestavěná funkce data a času, která vrací den v týdnu z daného data.
Přijímá jeden argument, což je datum, ze kterého chcete extrahovat den v týdnu.
Vrací den jako číslo. Číslování indexu se řídí standardem ODBC (1
=neděle, 2
=pondělí atd.). To je v kontrastu s WEEKDAY()
, kde 0
=pondělí, 1
=úterý atd.
Syntaxe
Syntaxe vypadá takto:
DAYOFWEEK(date)
Kde date
je datum, ze kterého se má získat den.
Příklad
Zde je příklad:
SELECT DAYOFWEEK('2030-01-25');
Výsledek:
+-------------------------+| DAYOFWEEK('2030-01-25') |+-------------------------+| 6 |+-------------------------+
Ve srovnání s názvem dne
Zde je další vedle DAYNAME()
vrátíte název dne:
SELECT
DAYOFWEEK('2030-01-20'),
DAYNAME('2030-01-20');
Výsledek:
+-------------------------+-------------------- ---+| DAYOFWEEK('2030-01-20') | DAYNAME('2030-01-20') |+-------------------------+------------ -----------+| 1 | neděle |+-------------------------+---------------------- --+
Jak již bylo zmíněno, číslování indexu začíná na 1 pro neděli.
Tady je sobota:
SELECT
DAYOFWEEK('2030-01-19'),
DAYNAME('2030-01-19');
Výsledek:
+-------------------------+-------------------- ---+| DAYOFWEEK('2030-01-19') | DAYNAME('2030-01-19') |+-------------------------+------------ -----------+| 7 | Sobota |+-------------------------+---------------------- --+
Hodnoty data a času
Funguje také s hodnotami datetime:
SELECT DAYOFWEEK('2030-01-24 10:30:45');
Výsledek:
+----------------------------------+| DAYOFWEEK('2030-01-24 10:30:45') |+--------------------------------- -+| 5 |+----------------------------------+
Nula dnů
Výsledkem nula dnů je null
.
Příklad:
SELECT DAYOFWEEK('2030-00-00');
Výsledek:
+-------------------------+| DAYOFWEEK('2030-00-00') |+--------------------------+| NULL |+-------------------------+
Číselná data
Je také možné předávat data jako číslo, pokud to dává smysl jako datum.
Příklad
SELECT DAYOFWEEK(20300125);
Výsledek:
+---------------------+| DAYOFWEEK(20300125) |+---------------------+| 6 |+---------------------+
Nebo dokonce následující (který používá dvouciferný rok):
SELECT DAYOFWEEK(300125);
Výsledek:
+-------------------+| DAYOFWEEK(300125) |+-------------------+| 6 |+-------------------+
Ale jako rande to musí dávat smysl. Když zvětším část dne na neplatný den, stane se toto:
SELECT DAYOFWEEK(20300135);
Výsledek:
+---------------------+| DAYOFWEEK(20300135) |+---------------------+| NULL |+---------------------+
Další oddělovače
Pro datum můžete použít jiné oddělovače. MariaDB je docela shovívavá, pokud jde o oddělovače dat. Zde je několik platných příkladů:
SELECT
DAYOFWEEK('2030/01/25'),
DAYOFWEEK('2030,01,25'),
DAYOFWEEK('2030:01:25'),
DAYOFWEEK('2030;01!25');
Výsledek (při použití vertikálního výstupu):
DAYOFWEEK('2030/01/25'):6DAYOFWEEK('2030,01,25'):6DAYOFWEEK('2030:01:25'):6DAYOFWEEK('2030;01!25'):6Aktuální datum
Můžeme předat
NOW()
jako argument data pro použití aktuálního data:SELECT NOW(), DAYOFWEEK(NOW());
Výsledek:
+---------------------+------------------+| NYNÍ() | DAYOFWEEK(NOW()) |+---------------------+------------------+| 2021-05-15 09:17:44 | 7 |+---------------------+------------------+Neplatné argumenty
Při předání neplatného argumentu
DAYOFWEEK()
vrátínull
:SELECT DAYOFWEEK('Homer');
Výsledek:
+---------------------+| DAYOFWEEK('Homer') |+--------------------+| NULL |+--------------------+Chybí argument
Volání
DAYOFWEEK()
s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:SELECT DAYOFWEEK();
Výsledek:
CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'DAYOFWEEK'A další příklad:
SELECT DAYOFWEEK('2030-01-25', '2045-05-08');
Výsledek:
CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'DAYOFWEEK'