sql >> Database >  >> RDS >> Mysql

YEARWEEK() Voorbeelden – MySQL

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 |
+--------+--------+--------+--------+--------+--------+--------+--------+

  1. T-SQL SET-operators Deel 2:INTERSECT en BEHALVE

  2. Hoe ontkom ik aan vierkante haken in een LIKE-clausule?

  3. Tabel opzoeken in SortCL-compatibele IRI-taken

  4. postgres kolom X bestaat niet