sql >> Database >  >> RDS >> Mysql

WEEK() Voorbeelden – MySQL

In MySQL kunt u de WEEK() functie om het weeknummer voor een bepaalde datum te krijgen. Met "weeknummer" bedoel ik de week van het jaar.

Om de functie te gebruiken, geeft u gewoon de datum op als argument en het weeknummer wordt geretourneerd.

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

De syntaxis gaat als volgt:

WEEK(date[,mode])

Waar:

  • date is de datum waarvan u het 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.

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld om te demonstreren.

SELECT WEEK('2021-01-25') As 'Week Number';

Resultaat:

+-------------+
| Week Number |
+-------------+
|           4 |
+-------------+

Hier is een voorbeeld met een datum tegen het einde van het jaar.

SELECT WEEK('2021-12-25') As 'Week Number';

Resultaat:

+-------------+
| Week Number |
+-------------+
|          51 |
+-------------+

Voorbeeld 2 – Specificeer een modus

Als u geen tweede argument opgeeft, wordt de WEEK() functie gebruikt de modus zoals gespecificeerd door de default_week_format systeem variabele. De standaardwaarde van deze variabele is 0 .

U hebt echter ook de mogelijkheid om een ​​tweede argument op te geven om aan te geven welke modus u wilt gebruiken. Voorbeeld:

SELECT WEEK('2019-10-17', 7) AS 'Mode 7';

Resultaat:

+--------+
| Mode 7 |
+--------+
|     41 |
+--------+

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

Voor moduswaarden waarbij week 1 de eerste week is "met 4 of meer dagen dit jaar", worden de weken genummerd volgens ISO 8601:1988:

  • Als de week met 1 januari 4 of meer dagen in het nieuwe jaar heeft, is het week 1.
  • Anders is het de laatste week van het voorgaande jaar en is de volgende week week 1.

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 
  WEEK(@date, 0) AS 'Mode 0',
  WEEK(@date, 1) AS 'Mode 1',
  WEEK(@date, 2) AS 'Mode 2',
  WEEK(@date, 3) AS 'Mode 3',
  WEEK(@date, 4) AS 'Mode 4',
  WEEK(@date, 5) AS 'Mode 5',
  WEEK(@date, 6) AS 'Mode 6',
  WEEK(@date, 7) AS 'Mode 7';

Resultaat:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
|      0 |      1 |     52 |      1 |      1 |      0 |      1 |     53 |
+--------+--------+--------+--------+--------+--------+--------+--------+

Datum 2

SET @date = '2019-01-06';
SELECT 
  WEEK(@date, 0) AS 'Mode 0',
  WEEK(@date, 1) AS 'Mode 1',
  WEEK(@date, 2) AS 'Mode 2',
  WEEK(@date, 3) AS 'Mode 3',
  WEEK(@date, 4) AS 'Mode 4',
  WEEK(@date, 5) AS 'Mode 5',
  WEEK(@date, 6) AS 'Mode 6',
  WEEK(@date, 7) AS 'Mode 7';

Resultaat:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
|      1 |      1 |      1 |      1 |      2 |      0 |      2 |     53 |
+--------+--------+--------+--------+--------+--------+--------+--------+

Datum 3

SET @date = '2019-01-07';
SELECT 
  WEEK(@date, 0) AS 'Mode 0',
  WEEK(@date, 1) AS 'Mode 1',
  WEEK(@date, 2) AS 'Mode 2',
  WEEK(@date, 3) AS 'Mode 3',
  WEEK(@date, 4) AS 'Mode 4',
  WEEK(@date, 5) AS 'Mode 5',
  WEEK(@date, 6) AS 'Mode 6',
  WEEK(@date, 7) AS 'Mode 7';

Resultaat:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
|      1 |      2 |      1 |      2 |      2 |      1 |      2 |      1 |
+--------+--------+--------+--------+--------+--------+--------+--------+

  1. Filteren op AANTAL(*)?

  2. MySQL Workbench:Fout in query (1064):Syntaxisfout bij 'VISIBLE' op regel 1

  3. Effectieve monitoring van MySQL-replicatie met SCUMM-dashboards:deel 2

  4. door komma's gescheiden waarden gebruiken in de IN-clausule voor kolom NUMBER