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

5 fonctions pour extraire le numéro de semaine d'une date dans MariaDB

Vous trouverez ci-dessous 5 fonctions qui vous permettent de renvoyer le numéro de semaine à partir d'une date dans MariaDB. Quatre renvoient uniquement la semaine, et un renvoie à la fois la semaine et l'année combinées.

La WEEK() Fonction

La WEEK() La fonction renvoie la semaine pour une date donnée.

Exemple :

SELECT WEEK('2023-07-25');

Résultat :

+--------------------+
| WEEK('2023-07-25') |
+--------------------+
|                 30 |
+--------------------+

La WEEK() La fonction accepte un deuxième argument facultatif pour spécifier le mode. Le résultat réel que vous obtiendrez de cette fonction dépendra du mode utilisé. Si l'argument mode est omis, la valeur du default_week_format variable système est utilisée.

Voir comment WEEK() Fonctionne dans MariaDB pour en savoir plus sur les modes et les exemples de chacun.

Le EXTRACT() Fonction

Le EXTRACT () La fonction vous permet d'extraire une unité spécifiée de la date. Par conséquent, vous pouvez l'utiliser pour extraire la semaine (ainsi que d'autres unités) de la date.

Exemple :

SELECT EXTRACT(WEEK FROM '2023-07-25');

Résultat :

+---------------------------------+
| EXTRACT(WEEK FROM '2023-07-25') |
+---------------------------------+
|                              30 |
+---------------------------------+

Le DATE_FORMAT() Fonction

Le DATE_FORMAT() La fonction vous permet de formater une date en fonction d'une chaîne de format. La chaîne de format spécifie comment la date doit être formatée.

Vous pouvez donc utiliser cette fonction pour retourner la semaine (ainsi que toute autre unité) à partir de la date. Il existe différentes options pour renvoyer le numéro de semaine, selon le jour où la semaine commence, etc.

Voici un exemple qui renvoie la semaine sous différentes formes :

SELECT 
    DATE_FORMAT('2023-01-01', '%U') AS "%U",
    DATE_FORMAT('2023-01-01', '%u') AS "%u",
    DATE_FORMAT('2023-01-01', '%V') AS "%V",
    DATE_FORMAT('2023-01-01', '%v') AS "%v";

Résultat :

+------+------+------+------+
| %U   | %u   | %V   | %v   |
+------+------+------+------+
| 01   | 00   | 01   | 52   |
+------+------+------+------+

Voici une description de chacun de ces spécificateurs de format :

Spécificateur de format Description
%U Numéro de la semaine (00-53), lorsque le premier jour de la semaine est le dimanche.
%u Numéro de la semaine (00-53), lorsque le premier jour de la semaine est lundi.
%V Numéro de la semaine (01-53), lorsque le premier jour de la semaine est le dimanche. Utilisé avec %X .
%v Numéro de la semaine (01-53), lorsque le premier jour de la semaine est le lundi. Utilisé avec %x .

Et voici une description de %X et %x comme indiqué dans le tableau ci-dessus :

Spécificateur de format Description
%X Année à 4 chiffres lorsque le premier jour de la semaine est le dimanche. Utilisé avec %V .
%x Année à 4 chiffres lorsque le premier jour de la semaine est lundi. Utilisé avec %v .

Nous pouvons combiner les spécificateurs de format pour renvoyer l'année et la semaine ensemble si nécessaire :

SELECT 
    DATE_FORMAT('2023-01-01', '%X, %V') AS "%X, %V",
    DATE_FORMAT('2023-01-01', '%x, %v') AS "%x, %v";

Résultat :

+----------+----------+
| %X, %V   | %x, %v   |
+----------+----------+
| 2023, 01 | 2022, 52 |
+----------+----------+

Notez que le numéro de semaine ne reflétera pas toujours les exemples ci-dessus - cela dépend de la date réelle utilisée.

Avançons la date d'un an :

SELECT 
    DATE_FORMAT('2024-01-01', '%U') AS "%U",
    DATE_FORMAT('2024-01-01', '%u') AS "%u",
    DATE_FORMAT('2024-01-01', '%V') AS "%V",
    DATE_FORMAT('2024-01-01', '%v') AS "%v";

Résultat :

+------+------+------+------+
| %U   | %u   | %V   | %v   |
+------+------+------+------+
| 00   | 01   | 53   | 01   |
+------+------+------+------+

Cette fois, nous obtenons un ensemble de résultats différent.

Voici ce qui se passe lorsque nous avançons dans l'année :

SELECT 
    DATE_FORMAT('2024-12-12', '%U') AS "%U",
    DATE_FORMAT('2024-12-12', '%u') AS "%u",
    DATE_FORMAT('2024-12-12', '%V') AS "%V",
    DATE_FORMAT('2024-12-12', '%v') AS "%v";

Résultat :

+------+------+------+------+
| %U   | %u   | %V   | %v   |
+------+------+------+------+
| 49   | 50   | 49   | 50   |
+------+------+------+------+

Comme vous pouvez le constater, le retour du numéro de semaine n'est pas toujours aussi clair que nous le souhaiterions.

Voir Chaînes de format MariaDB pour une liste complète des chaînes/spécificateurs de format pouvant être utilisés avec DATE_FORMAT() .

Le YEARWEEK() Fonction

Il est possible d'obtenir la semaine et année en une seule fois. Le YEARWEEK() La fonction renvoie l'année et la semaine pour une date donnée.

Exemple :

SELECT YEARWEEK('2023-01-01');

Résultat :

+------------------------+
| YEARWEEK('2023-01-01') |
+------------------------+
|                 202301 |
+------------------------+

L'année dans le résultat peut être différente de l'année dans l'argument de date pour la première et la dernière semaine de l'année.

Voici ce qui se passe si nous avançons d'un an :

SELECT YEARWEEK('2024-01-01');

Résultat :

+------------------------+
| YEARWEEK('2024-01-01') |
+------------------------+
|                 202353 |
+------------------------+

Comme pour la WEEK() fonction, la YEARWEEK() La fonction accepte un deuxième argument facultatif pour spécifier le mode. Le résultat réel que vous obtiendrez de cette fonction dépendra du mode utilisé. Si l'argument mode est omis, la valeur du default_week_format variable système est utilisée.

Découvrez comment YEARWEEK() Fonctionne dans MariaDB pour en savoir plus sur les modes et les exemples de chacun.