sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer DAYOFWEEK() i MariaDB

I MariaDB, DAYOFWEEK() er en indbygget dato- og tidsfunktion, der returnerer ugedagen fra en given dato.

Den accepterer ét argument, som er den dato, du vil udtrække ugedagen fra.

Det returnerer dagen som et tal. Indeksnummereringen overholder ODBC-standarden (1 =søndag, 2 =mandag osv.). Dette er i modsætning til WEEKDAY() , hvor 0 =mandag, 1 =tirsdag osv.

Syntaks

Syntaksen ser sådan ud:

DAYOFWEEK(date) 

Hvor date er datoen, man henter dagen fra.

Eksempel

Her er et eksempel:

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

Resultat:

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

Sammenlignet med Dagens navn

Her er endnu en ved siden af ​​DAYNAME() for at returnere dagens navn:

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

Resultat:

+------------------------+------------------------ ---+| UGEDAG('2030-01-20') | DAYNAME('2030-01-20') |+------------------------+------ -----------+| 1 | Søndag |+------------------------+---------------------------- --+

Som nævnt starter indeksnummereringen ved 1 for søndag.

Her er lørdag:

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

Resultat:

+------------------------+------------------------ ---+| UGEDAG('2030-01-19') | DAYNAME('2030-01-19') |+--------------------------------+---------------- -----------+| 7 | Lørdag |+------------------------+--------------------- --+

Dato-tidsværdier

Det fungerer også med datetime-værdier:

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

Resultat:

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

Nul dage

Nul dage resulterer i null .

Eksempel:

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

Resultat:

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

Numeriske datoer

Det er også muligt at videregive datoer som et tal, så længe det giver mening som en dato.

Eksempel

SELECT DAYOFWEEK(20300125); 

Resultat:

+----------------------------+| UGEDAG(20300125) |+---------------------------+| 6 |+----------------------------+

Eller endda følgende (som bruger et tocifret årstal):

SELECT DAYOFWEEK(300125); 

Resultat:

+------------------------+| UGEDAG(300125) |+------------------------+| 6 |+--------------------+

Men det skal give mening som en date. Her er, hvad der sker, hvis jeg øger dagsdelen til en ugyldig dag:

SELECT DAYOFWEEK(20300135); 

Resultat:

+----------------------------+| UGEDAG(20300135) |+--------------------------+| NULL |+----------------------------+

Andre afgrænsninger

Du kan bruge andre skilletegn for datoen. MariaDB er ret tilgivende, når det kommer til afgrænsninger på datoer. Her er nogle gyldige eksempler:

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

Resultat (ved hjælp af lodret output):

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

Aktuel dato

Vi kan sende NOW() som dato-argument for at bruge den aktuelle dato:

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

Resultat:

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

Ugyldige argumenter

Når et ugyldigt argument sendes, DAYOFWEEK() returnerer null :

SELECT DAYOFWEEK('Homer'); 

Resultat:

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

Manglende argument

Kalder DAYOFWEEK() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:

SELECT DAYOFWEEK(); 

Resultat:

FEJL 1582 (42000):Forkert parameterantal i kaldet til den oprindelige funktion 'DAYOFWEEK'

Og endnu et eksempel:

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

Resultat:

FEJL 1582 (42000):Forkert parameterantal i kaldet til den oprindelige funktion 'DAYOFWEEK'

  1. Lagre en fil i en database i modsætning til filsystemet?

  2. Sådan starter parallelle planer - del 4

  3. Opdeling af streng i flere rækker i Oracle

  4. Hvordan kan jeg bruge en forespørgsel med pladsholder inde i anførselstegn? (perl / postgresql)