Mysql
 sql >> Base de données >  >> RDS >> Mysql

YEARWEEK() Exemples – MySQL

Dans MySQL, le YEARWEEK() La fonction renvoie l'année et la semaine pour une date donnée. Vous fournissez la date comme argument, et la fonction renverra le résultat en conséquence.

Vous avez également la possibilité de spécifier si vous souhaitez démarrer la semaine le dimanche ou le lundi, et si la semaine doit être comprise entre 0 et 53 ou entre 1 et 53.

Syntaxe

Vous pouvez utiliser l'un des deux formulaires suivants :

YEARWEEK(date)
YEARWEEK(date,mode)

Où :

  • date est la date à partir de laquelle vous voulez que l'année et le numéro de semaine soient renvoyés.
  • mode est un nombre qui spécifie si la semaine doit commencer le dimanche ou le lundi et si la semaine doit être comprise entre 0 et 53 ou entre 1 et 53. Consultez le tableau ci-dessous pour les valeurs de mode possibles.

Si aucun mode n'est spécifié, le mode est 0 .

Exemple 1 - Utilisation de base

Voici un exemple pour illustrer.

SELECT YEARWEEK('2021-01-25') As 'Result';

Résultat :

+--------+
| Result |
+--------+
| 202104 |
+--------+

Voici un exemple avec une date différente.

SELECT YEARWEEK('1999-12-25') As 'Result';

Résultat :

+--------+
| Result |
+--------+
| 199951 |
+--------+

Exemple 2 - Spécifier un mode

Si vous ne spécifiez pas de deuxième argument, le YEARWEEK() la fonction utilise 0 comme mode.

Cependant, vous avez également la possibilité de fournir un deuxième argument pour spécifier le mode à utiliser. Exemple :

SELECT YEARWEEK('2019-11-23', 7) AS 'Mode 7';

Résultat :

+--------+
| Mode 7 |
+--------+
| 201946 |
+--------+

Les valeurs de mode possibles sont les suivantes.

Mode Premier jour de la semaine Plage La semaine 1 est la première semaine …
0 dimanche 0-53 avec un dimanche cette année
1 Lundi 0-53 avec 4 jours ou plus cette année
2 dimanche 1-53 avec un dimanche cette année
3 Lundi 1-53 avec 4 jours ou plus cette année
4 dimanche 0-53 avec 4 jours ou plus cette année
5 Lundi 0-53 avec un lundi cette année
6 dimanche 1-53 avec 4 jours ou plus cette année
7 Lundi 1-53 avec un lundi cette année

Ce sont les mêmes valeurs qui peuvent être utilisées avec le WEEK() fonction.

Une différence entre ces deux fonctions est que le WEEK() la fonction tire son mode par défaut du default_week_format variable système (la valeur par défaut de cette variable est 0 ). YEARWEEK() d'autre part, ignore ce paramètre et utilise 0 comme valeur par défaut (quel que soit le default_week_format réglage).

Exemple 3 - Comparaison des modes

Voici une comparaison rapide de la façon dont vous pouvez obtenir des résultats différents selon le mode utilisé.

Les trois exemples suivants utilisent le même code, mais avec trois dates différentes. Ces dates sont consécutives - elles se produisent les 5, 6 et 7 janvier. Comme vous pouvez le voir, les résultats peuvent être assez différents selon la date exacte et le mode utilisé.

Date 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';

Résultat :

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

Date 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';

Résultat :

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

Date 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';

Résultat :

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