In MariaDB, DAYOFYEAR()
is een ingebouwde datum- en tijdfunctie die de dag van het jaar vanaf een bepaalde datum retourneert.
Het accepteert één argument, namelijk de datum waaruit u de dag van het jaar wilt halen.
Het geeft de dag terug als een getal in het bereik 1
tot 366
.
Syntaxis
De syntaxis gaat als volgt:
DAYOFYEAR(date)
Waar date
is de datum om de dag van het jaar uit te halen.
Voorbeeld
Hier is een voorbeeld:
SELECT DAYOFYEAR('2030-12-25');
Resultaat:
+-------------------------+ | DAYOFYEAR('2030-12-25') | +-------------------------+ | 359 | +-------------------------+
Datum/tijd-waarden
Het werkt ook met datetime-waarden:
SELECT DAYOFYEAR('2030-02-01 10:30:45');
Resultaat:
+----------------------------------+ | DAYOFYEAR('2030-02-01 10:30:45') | +----------------------------------+ | 32 | +----------------------------------+
Nul dagen
Nul dagen resulteren in null
.
Voorbeeld:
SELECT DAYOFYEAR('2030-00-00');
Resultaat:
+-------------------------+ | DAYOFYEAR('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 DAYOFYEAR(20301125);
Resultaat:
+---------------------+ | DAYOFYEAR(20301125) | +---------------------+ | 329 | +---------------------+
Of zelfs het volgende (met een jaartal van twee cijfers):
SELECT DAYOFYEAR(301125);
Resultaat:
+-------------------+ | DAYOFYEAR(301125) | +-------------------+ | 329 | +-------------------+
Maar het moet logisch zijn als een date. Dit gebeurt er als ik het daggedeelte verhoog naar een ongeldige dag:
SELECT DAYOFYEAR(20300135);
Resultaat:
+---------------------+ | DAYOFYEAR(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
DAYOFYEAR('2030/06/25'),
DAYOFYEAR('2030,06,25'),
DAYOFYEAR('2030:06:25'),
DAYOFYEAR('2030;06!25');
Resultaat (met verticale uitvoer):
DAYOFYEAR('2030/06/25'): 176 DAYOFYEAR('2030,06,25'): 176 DAYOFYEAR('2030:06:25'): 176 DAYOFYEAR('2030;06!25'): 176
Huidige datum
We kunnen NOW()
doorgeven als het datumargument om de huidige datum te gebruiken:
SELECT
NOW(),
DAYOFYEAR(NOW());
Resultaat:
+---------------------+------------------+ | NOW() | DAYOFYEAR(NOW()) | +---------------------+------------------+ | 2021-05-16 09:05:57 | 136 | +---------------------+------------------+
Ongeldige argumenten
Wanneer een ongeldig argument wordt doorgegeven, DAYOFYEAR()
retourneert null
:
SELECT DAYOFYEAR('Friday');
Resultaat:
+---------------------+ | DAYOFYEAR('Friday') | +---------------------+ | NULL | +---------------------+
Ontbrekend argument
Bellen DAYOFYEAR()
met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:
SELECT DAYOFYEAR();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DAYOFYEAR'
En nog een voorbeeld:
SELECT DAYOFYEAR('2030-01-25', '2045-05-08');
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DAYOFYEAR'