In MariaDB, DAYOFWEEK()
is een ingebouwde datum- en tijdfunctie die de dag van de week vanaf een bepaalde datum retourneert.
Het accepteert één argument, namelijk de datum waaruit u de dag van de week wilt halen.
Het geeft de dag als een getal terug. De indexnummering voldoet aan de ODBC-standaard (1
=zondag, 2
=maandag, enz.). Dit in tegenstelling tot WEEKDAY()
, waarbij 0
=maandag, 1
=dinsdag, enz.
Syntaxis
De syntaxis gaat als volgt:
DAYOFWEEK(date)
Waar date
is de datum om de dag vanaf te halen.
Voorbeeld
Hier is een voorbeeld:
SELECT DAYOFWEEK('2030-01-25');
Resultaat:
+-------------------------+ | DAYOFWEEK('2030-01-25') | +-------------------------+ | 6 | +-------------------------+
Vergeleken met de naam van de dag
Hier is er nog een, naast DAYNAME()
om de naam van de dag terug te geven:
SELECT
DAYOFWEEK('2030-01-20'),
DAYNAME('2030-01-20');
Resultaat:
+-------------------------+-----------------------+ | DAYOFWEEK('2030-01-20') | DAYNAME('2030-01-20') | +-------------------------+-----------------------+ | 1 | Sunday | +-------------------------+-----------------------+
Zoals gezegd begint de indexnummering bij 1 voor zondag.
Hier is zaterdag:
SELECT
DAYOFWEEK('2030-01-19'),
DAYNAME('2030-01-19');
Resultaat:
+-------------------------+-----------------------+ | DAYOFWEEK('2030-01-19') | DAYNAME('2030-01-19') | +-------------------------+-----------------------+ | 7 | Saturday | +-------------------------+-----------------------+
Datum/tijd-waarden
Het werkt ook met datetime-waarden:
SELECT DAYOFWEEK('2030-01-24 10:30:45');
Resultaat:
+----------------------------------+ | DAYOFWEEK('2030-01-24 10:30:45') | +----------------------------------+ | 5 | +----------------------------------+
Nul dagen
Nul dagen resulteren in null
.
Voorbeeld:
SELECT DAYOFWEEK('2030-00-00');
Resultaat:
+-------------------------+ | DAYOFWEEK('2030-00-00') | +-------------------------+ | NULL | +-------------------------+
Numerieke datums
Het is ook mogelijk om datums als een getal door te geven, zolang het maar logisch is als een datum.
Voorbeeld
SELECT DAYOFWEEK(20300125);
Resultaat:
+---------------------+ | DAYOFWEEK(20300125) | +---------------------+ | 6 | +---------------------+
Of zelfs het volgende (met een jaartal van twee cijfers):
SELECT DAYOFWEEK(300125);
Resultaat:
+-------------------+ | DAYOFWEEK(300125) | +-------------------+ | 6 | +-------------------+
Maar het moet logisch zijn als een date. Dit gebeurt er als ik het daggedeelte verhoog naar een ongeldige dag:
SELECT DAYOFWEEK(20300135);
Resultaat:
+---------------------+ | DAYOFWEEK(20300135) | +---------------------+ | NULL | +---------------------+
Andere scheidingstekens
U kunt andere scheidingstekens voor de datum gebruiken. MariaDB is behoorlijk vergevingsgezind als het gaat om scheidingstekens op datums. Hier zijn enkele geldige voorbeelden:
SELECT
DAYOFWEEK('2030/01/25'),
DAYOFWEEK('2030,01,25'),
DAYOFWEEK('2030:01:25'),
DAYOFWEEK('2030;01!25');
Resultaat (met verticale uitvoer):
DAYOFWEEK('2030/01/25'): 6 DAYOFWEEK('2030,01,25'): 6 DAYOFWEEK('2030:01:25'): 6 DAYOFWEEK('2030;01!25'): 6
Huidige datum
We kunnen NOW()
doorgeven als het datumargument om de huidige datum te gebruiken:
SELECT
NOW(),
DAYOFWEEK(NOW());
Resultaat:
+---------------------+------------------+ | NOW() | DAYOFWEEK(NOW()) | +---------------------+------------------+ | 2021-05-15 09:17:44 | 7 | +---------------------+------------------+
Ongeldige argumenten
Wanneer een ongeldig argument wordt doorgegeven, DAYOFWEEK()
retourneert null
:
SELECT DAYOFWEEK('Homer');
Resultaat:
+--------------------+ | DAYOFWEEK('Homer') | +--------------------+ | NULL | +--------------------+
Ontbrekend argument
Bellen DAYOFWEEK()
met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:
SELECT DAYOFWEEK();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DAYOFWEEK'
En nog een voorbeeld:
SELECT DAYOFWEEK('2030-01-25', '2045-05-08');
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DAYOFWEEK'