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'