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