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