sql >> Databáze >  >> RDS >> MariaDB

Jak funguje DAYOFWEEK() v MariaDB

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'):6 

Aktuá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'

  1. SQLite JSON_QUOTE()

  2. neúplné informace z dotazu na pg_views

  3. SQL ROWNUM, jak vrátit řádky mezi určitým rozsahem

  4. Jak mohu exportovat obsah tabulky oracle do souboru?