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