In MariaDB, WEEKOFYEAR()
is een ingebouwde datum- en tijdfunctie die de kalenderweek van een bepaalde datum retourneert als een getal in het bereik van 1
tot 53
.
Het is het equivalent van het gebruik van de WEEK()
functie in modus 3, en daarom is het resultaat in overeenstemming met ISO 8601:1988.
Het accepteert één argument; de datum waarvan u de week wilt extraheren.
Syntaxis
De syntaxis gaat als volgt:
WEEKOFYEAR(date)
Waar date
is de datumuitdrukking om de kalenderweek van te krijgen.
Voorbeeld
Hier is een voorbeeld:
SELECT WEEKOFYEAR('2030-01-01');
Resultaat:
+--------------------------+ | WEEKOFYEAR('2030-01-01') | +--------------------------+ | 1 | +--------------------------+
Het is het equivalent van het volgende doen:
SELECT WEEK('2030-01-01', 3);
Resultaat:
+-----------------------+ | WEEK('2030-01-01', 3) | +-----------------------+ | 1 | +-----------------------+
Datum/tijd-waarden
De WEEKOFYEAR()
functie werkt ook met datetime-waarden:
SELECT WEEKOFYEAR('2030-08-01 10:30:45');
Resultaat:
+-----------------------------------+ | WEEKOFYEAR('2030-08-01 10:30:45') | +-----------------------------------+ | 31 | +-----------------------------------+
Numerieke datums
Het is ook mogelijk om datums als een getal door te geven, zolang het maar logisch is als een datum.
Voorbeeld
SELECT WEEKOFYEAR(20301125);
Resultaat:
+----------------------+ | WEEKOFYEAR(20301125) | +----------------------+ | 48 | +----------------------+
Of zelfs het volgende (met een jaartal van twee cijfers):
SELECT WEEKOFYEAR(301125);
Resultaat:
+--------------------+ | WEEKOFYEAR(301125) | +--------------------+ | 48 | +--------------------+
Maar het moet logisch zijn als een date. Dit gebeurt er als ik het daggedeelte verhoog naar een ongeldige dag:
SELECT WEEKOFYEAR(20301135);
Resultaat:
+----------------------+ | WEEKOFYEAR(20301135) | +----------------------+ | NULL | +----------------------+ 1 row in set, 1 warning (0.000 sec)
Het retourneerde null
met een waarschuwing.
Laten we eens kijken naar de waarschuwing:
SHOW WARNINGS;
Resultaat:
+---------+------+--------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------+ | Warning | 1292 | Incorrect datetime value: '20301135' | +---------+------+--------------------------------------+
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
WEEKOFYEAR('2030/06/25'),
WEEKOFYEAR('2030,06,25'),
WEEKOFYEAR('2030:06:25'),
WEEKOFYEAR('2030;06!25');
Resultaat (met verticale uitvoer):
WEEKOFYEAR('2030/06/25'): 26 WEEKOFYEAR('2030,06,25'): 26 WEEKOFYEAR('2030:06:25'): 26 WEEKOFYEAR('2030;06!25'): 26
Huidige datum
We kunnen NOW()
doorgeven als het datetime-argument om de huidige datum te gebruiken:
SELECT
NOW(),
WEEKOFYEAR(NOW());
Resultaat:
+---------------------+-------------------+ | NOW() | WEEKOFYEAR(NOW()) | +---------------------+-------------------+ | 2021-05-17 09:42:13 | 20 | +---------------------+-------------------+
Ongeldige argumenten
Wanneer een ongeldig argument wordt doorgegeven, WEEKOFYEAR()
retourneert null
:
SELECT WEEKOFYEAR('2030-65-78');
Resultaat:
+--------------------------+ | WEEKOFYEAR('2030-65-78') | +--------------------------+ | NULL | +--------------------------+ 1 row in set, 1 warning (0.000 sec)
Laten we de waarschuwing tonen:
SHOW WARNINGS;
Resultaat:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2030-65-78' | +---------+------+----------------------------------------+
Ontbrekend argument
Bellen WEEKOFYEAR()
met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:
SELECT WEEKOFYEAR();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'WEEKOFYEAR'
En nog een voorbeeld:
SELECT WEEKOFYEAR('2030-12-10', 1);
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'WEEKOFYEAR'