sql >> Databasteknik >  >> RDS >> MariaDB

Hur DAYOFWEEK() fungerar i MariaDB

I MariaDB, DAYOFWEEK() är en inbyggd datum- och tidsfunktion som returnerar veckodagen från ett givet datum.

Den accepterar ett argument, vilket är det datum du vill extrahera veckodagen från.

Den returnerar dagen som en siffra. Indexnumreringen följer ODBC-standarden (1 =söndag, 2 =måndag osv). Detta är i motsats till WEEKDAY() , där 0 =måndag, 1 =tisdag osv.

Syntax

Syntaxen ser ut så här:

DAYOFWEEK(date) 

Där date är datumet att hämta dagen från.

Exempel

Här är ett exempel:

SELECT DAYOFWEEK('2030-01-25'); 

Resultat:

+------------------------+| DAYOFWEEK('2030-01-25') |+--------------------------------+| 6 |+-------------------------+

Jämfört med Dagens namn

Här är en till, bredvid DAYNAME() för att returnera dagens namn:

SELECT 
    DAYOFWEEK('2030-01-20'),
    DAYNAME('2030-01-20'); 

Resultat:

+------------------------+------------------------ ---+| DAYOFWEEK('2030-01-20') | DAGNAMN('2030-01-20') |+------------------------+------ -----------+| 1 | Söndag |+------------------------+---------------------------- --+

Som nämnts börjar indexnumreringen vid 1 för söndag.

Här är lördag:

SELECT 
    DAYOFWEEK('2030-01-19'),
    DAYNAME('2030-01-19'); 

Resultat:

+------------------------+------------------------ ---+| DAYOFWEEK('2030-01-19') | DAYNAME('2030-01-19') |+--------------------------------+---------------- -----------+| 7 | Lördag |+------------------------+--------------------- --+

Datetime-värden

Det fungerar också med datetime-värden:

SELECT DAYOFWEEK('2030-01-24 10:30:45'); 

Resultat:

+------------------------------------------+| DAYOFWEEK('2030-01-24 10:30:45') |+-------------------------------- -+| 5 |+----------------------------------------+

Noll dagar

Noll dagar resulterar i null .

Exempel:

SELECT DAYOFWEEK('2030-00-00'); 

Resultat:

+------------------------+| DAYOFWEEK('2030-00-00') |+--------------------------------+| NULL |+-------------------------+

Numeriska datum

Det är också möjligt att skicka datum som ett nummer, så länge det är vettigt som ett datum.

Exempel

SELECT DAYOFWEEK(20300125); 

Resultat:

+----------------------------+| VECKADAG(20300125) |+---------------------------+| 6 |+----------------------------+

Eller till och med följande (som använder ett tvåsiffrigt år):

SELECT DAYOFWEEK(300125); 

Resultat:

+------------------------+| VECKADAG(300125) |+------------------------+| 6 |+--------------------+

Men det måste vara vettigt som en dejt. Så här händer om jag ökar dagdelen till en ogiltig dag:

SELECT DAYOFWEEK(20300135); 

Resultat:

+----------------------------+| VECKADAG(20300135) |+---------------------------+| NULL |+----------------------------+

Andra avgränsare

Du kan använda andra avgränsare för datumet. MariaDB är ganska förlåtande när det kommer till avgränsare på datum. Här är några giltiga exempel:

SELECT 
    DAYOFWEEK('2030/01/25'),
    DAYOFWEEK('2030,01,25'),
    DAYOFWEEK('2030:01:25'),
    DAYOFWEEK('2030;01!25'); 

Resultat (med vertikal utdata):

DAYOFWEEK('2030/01/25'):6DAYOFWEEK('2030,01,25'):6DAYOFWEEK('2030:01:25'):6DAYOFWEEK('2030;01!25'):6 

Aktuellt datum

Vi kan skicka NOW() som datumargument för att använda det aktuella datumet:

SELECT 
    NOW(),
    DAYOFWEEK(NOW()); 

Resultat:

+---------------------+-----------------+| NU() | VECKADAG(NU()) |+--------------------------+------------------+| 2021-05-15 09:17:44 | 7 |+---------------------+------------------------+

Ogiltiga argument

När ett ogiltigt argument skickades, DAYOFWEEK() returnerar null :

SELECT DAYOFWEEK('Homer'); 

Resultat:

+----------------------------+| DAYOFWEEK('Homer') |+---------------------+| NULL |+---------------------+

Argument saknas

Anropar DAYOFWEEK() med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:

SELECT DAYOFWEEK(); 

Resultat:

ERROR 1582 (42000):Fel parameterräkning i anropet till den ursprungliga funktionen 'DAYOFWEEK'

Och ett annat exempel:

SELECT DAYOFWEEK('2030-01-25', '2045-05-08'); 

Resultat:

ERROR 1582 (42000):Fel parameterräkning i anropet till den ursprungliga funktionen 'DAYOFWEEK'

  1. Beräkna din SQL Server Monitoring Total Cost of Ownership

  2. SQL Server Performance TOP IO Query -1

  3. 2 sätt att få standardspråket för en inloggning i SQL Server (T-SQL)

  4. Installera icu4c version 63 med Homebrew