In MySQL is de YEARWEEK()
functie retourneert het jaar en de week voor een bepaalde datum. Je geeft de datum op als argument, en de functie zal het resultaat dienovereenkomstig teruggeven.
Je hebt ook de mogelijkheid om aan te geven of de week op zondag of maandag moet beginnen en of de week tussen 0 en 53 of tussen 1 en 53 moet liggen.
Syntaxis
U kunt een van de volgende twee formulieren gebruiken:
YEARWEEK(date) YEARWEEK(date,mode)
Waar:
date
is de datum waarvan u het jaar- en weeknummer wilt retourneren.mode
is een getal dat aangeeft of de week op zondag of maandag moet beginnen en of de week tussen 0 en 53 of tussen 1 en 53 moet liggen. Zie de onderstaande tabel voor de mogelijke moduswaarden.
Als er geen modus is opgegeven, is de modus 0
.
Voorbeeld 1 – Basisgebruik
Hier is een voorbeeld om te demonstreren.
SELECT YEARWEEK('2021-01-25') As 'Result';
Resultaat:
+--------+ | Result | +--------+ | 202104 | +--------+
Hier is een voorbeeld met een andere datum.
SELECT YEARWEEK('1999-12-25') As 'Result';
Resultaat:
+--------+ | Result | +--------+ | 199951 | +--------+
Voorbeeld 2 – Specificeer een modus
Als u geen tweede argument opgeeft, wordt de YEARWEEK()
functie gebruikt 0
als de modus.
U hebt echter ook de mogelijkheid om een tweede argument op te geven om aan te geven welke modus u wilt gebruiken. Voorbeeld:
SELECT YEARWEEK('2019-11-23', 7) AS 'Mode 7';
Resultaat:
+--------+ | Mode 7 | +--------+ | 201946 | +--------+
De mogelijke moduswaarden zijn als volgt.
Modus | Eerste dag van de week | Bereik | Week 1 is de eerste week … |
---|---|---|---|
0 | Zondag | 0-53 | met een zondag in dit jaar |
1 | Maandag | 0-53 | met 4 of meer dagen dit jaar |
2 | Zondag | 1-53 | met een zondag in dit jaar |
3 | Maandag | 1-53 | met 4 of meer dagen dit jaar |
4 | Zondag | 0-53 | met 4 of meer dagen dit jaar |
5 | Maandag | 0-53 | met een maandag in dit jaar |
6 | Zondag | 1-53 | met 4 of meer dagen dit jaar |
7 | Maandag | 1-53 | met een maandag in dit jaar |
Dit zijn dezelfde waarden die kunnen worden gebruikt met de WEEK()
functie.
Een verschil tussen deze twee functies is dat de WEEK()
functie ontleent zijn standaardmodus aan het default_week_format
systeemvariabele (de standaardwaarde van deze variabele is 0
). YEARWEEK()
aan de andere kant, negeert deze instelling, en gebruikt 0
als zijn standaardwaarde (ongeacht het default_week_format
instelling).
Voorbeeld 3 – Vergelijking van modi
Hier is een snelle vergelijking van hoe u verschillende resultaten kunt krijgen, afhankelijk van de modus die wordt gebruikt.
De volgende drie voorbeelden gebruiken dezelfde code, maar met drie verschillende datums. Deze data zijn opeenvolgend - ze vallen op 5, 6 en 7 januari. Zoals je kunt zien, kunnen de resultaten behoorlijk verschillen, afhankelijk van de exacte datum en de modus die wordt gebruikt.
Datum 1
SET @date = '2019-01-05'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Resultaat:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201852 | 201901 | 201852 | 201901 | 201901 | 201853 | 201901 | 201853 | +--------+--------+--------+--------+--------+--------+--------+--------+
Datum 2
SET @date = '2019-01-06'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Resultaat:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201901 | 201901 | 201901 | 201901 | 201902 | 201853 | 201902 | 201853 | +--------+--------+--------+--------+--------+--------+--------+--------+
Datum 3
SET @date = '2019-01-07'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Resultaat:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201901 | 201902 | 201901 | 201902 | 201902 | 201901 | 201902 | 201901 | +--------+--------+--------+--------+--------+--------+--------+--------+