sql >> Databasteknik >  >> RDS >> MariaDB

Hur WEEKDAY() fungerar i MariaDB

I MariaDB, WEEKDAY() ä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 börjar på noll för måndag (d.v.s. 0 =måndag, 1 =tisdag, etc). Detta är i motsats till DAYOFWEEK() , som följer ODBC-standarden (1 =söndag, 2 =måndag osv).

Syntax

Syntaxen ser ut så här:

WEEKDAY(date) 

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

Exempel

Här är ett exempel:

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

Resultat:

+------------------------------+| WEEKDAY('2030-01-25') |+-----------------------------+| 4 |+------------------------------+

Jämfört med Dagens namn

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

SELECT 
    WEEKDAY('2030-01-21'),
    DAYNAME('2030-01-21'); 

Resultat:

+-------------------------+----------------------- -+| WEEKDAY('2030-01-21') | DAGNAMN('2030-01-21') |+----------------------------+-------------------- ----------+| 0 | Måndag |+------------------------+------------------------------ +

Som nämnts börjar indexnumreringen på 0 för måndag.

Här är söndag:

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

Resultat:

+-------------------------+----------------------- -+| WEEKDAY('2030-01-20') | DAGNAMN('2030-01-20') |+----------------------------+-------------------- ----------+| 6 | Söndag |+------------------------+------------------------------ +

Datetime-värden

Det fungerar också med datetime-värden:

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

Resultat:

+--------------------------------+| WEEKDAY('2030-01-24 10:30:45') |+--------------------------------+ | 3 |+--------------------------------+

Noll dagar

Noll dagar resulterar i null .

Exempel:

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

Resultat:

+------------------------------+| WEEKDAY('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 WEEKDAY(20300125); 

Resultat:

+------------------------+| WEEKDAY(20300125) |+--------------------+| 4 |+--------------------+

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

SELECT WEEKDAY(300125); 

Resultat:

+----------------+| WEEKDAY(300125) |+-----------------+| 4 |+-----------------+

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

SELECT WEEKDAY(20300135); 

Resultat:

+------------------------+| WEEKDAY(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 
    WEEKDAY('2030/01/25'),
    WEEKDAY('2030,01,25'),
    WEEKDAY('2030:01:25'),
    WEEKDAY('2030;01!25'); 

Resultat (med vertikal utdata):

WEEKDAY('2030/01/25'):4WEEKDAY('2030,01,25'):4WEEKDAY('2030:01:25'):4WEEKDAY('2030;01!25'):4 

Aktuellt datum

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

SELECT 
    NOW(),
    WEEKDAY(NOW()); 

Resultat:

+----------------------------+----------------+| NU() | VECKODAG(NU()) |+------------------------+----------------+| 2021-05-15 09:44:50 | 5 |+----------------------------+----------------+

Ogiltiga argument

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

SELECT WEEKDAY('Homer'); 

Resultat:

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

Argument saknas

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

SELECT WEEKDAY(); 

Resultat:

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

Och ett annat exempel:

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

Resultat:

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

  1. Så här fixar du "Partitionsschemat '...' har ingen nästa använda filgrupp" i SQL Server

  2. Varför säger Postgres att kolumn inte existerar?

  3. Hur extraherar man endast datumvärde från datumfält i Oracle?

  4. 2 sätt att returnera icke-numeriska värden i SQLite