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

4 fonctions pour retourner l'année à partir d'une date dans MariaDB

Voici 4 fonctions qui vous permettent de retourner l'année à partir d'une date dans MariaDB. Trois fonctions renvoient uniquement l'année, et une renvoie à la fois l'année et la semaine.

Le YEAR() Fonction

Le YEAR() La fonction renvoie l'année pour une date donnée. Le résultat est dans la plage 1000 à 9999 , ou 0 pour les dates qui ont une année nulle (comme 0000-00-00 ).

Exemple :

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

Résultat :

+--------------------+
| YEAR('2023-07-25') |
+--------------------+
|               2023 |
+--------------------+

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 l'année (ainsi que d'autres unités) de la date.

Exemple :

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

Résultat :

+---------------------------------+
| EXTRACT(YEAR FROM '2023-07-25') |
+---------------------------------+
|                            2023 |
+---------------------------------+

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 renvoyer l'année (ainsi que toute autre unité) à partir de la date. Il existe différents spécificateurs de format pour renvoyer l'année dans différents formats. Par exemple une année à quatre chiffres, une année à deux chiffres, etc.

Voici un exemple qui renvoie l'année sous différentes formes :

SELECT 
    DATE_FORMAT('2023-01-01', '%X') AS "%X",
    DATE_FORMAT('2023-01-01', '%x') AS "%x",
    DATE_FORMAT('2023-01-01', '%Y') AS "%Y",
    DATE_FORMAT('2023-01-01', '%y') AS "%y";

Résultat :

+------+------+------+------+
| %X   | %x   | %Y   | %y   |
+------+------+------+------+
| 2023 | 2022 | 2023 | 23   |
+------+------+------+------+

Notez que %x renvoyé un numéro d'année différent des autres.

Voici une description de chacun de ces spécificateurs de format, qui explique pourquoi %x a renvoyé un résultat différent :

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 .
%Y Année à 4 chiffres.
%y Année sur 2 chiffres.

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

Spécificateur de format Description
%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 .

Nous pourrions donc ajouter ces spécificateurs de format à l'exemple ci-dessus et obtenir ce qui suit :

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 %x ne renverra pas toujours une année différente - cela dépend de la date réelle utilisée. Parfois, c'est %X qui renvoie une année différente des autres.

Avançons la date d'un an :

SELECT 
    DATE_FORMAT('2024-01-01', '%X') AS "%X",
    DATE_FORMAT('2024-01-01', '%x') AS "%x",
    DATE_FORMAT('2024-01-01', '%Y') AS "%Y",
    DATE_FORMAT('2024-01-01', '%y') AS "%y";

Résultat :

+------+------+------+------+
| %X   | %x   | %Y   | %y   |
+------+------+------+------+
| 2023 | 2024 | 2024 | 24   |
+------+------+------+------+

Cette fois c'est %X c'est l'intrus. Comme expliqué dans le tableau ci-dessus, cela dépend si le premier jour de la semaine est le dimanche ou le lundi.

Bien sûr, si nous avançons plus loin dans l'année, tous les spécificateurs de format renvoient la même année :

SELECT 
    DATE_FORMAT('2024-12-12', '%X') AS "%X",
    DATE_FORMAT('2024-12-12', '%x') AS "%x",
    DATE_FORMAT('2024-12-12', '%Y') AS "%Y",
    DATE_FORMAT('2024-12-12', '%y') AS "%y";

Résultat :

+------+------+------+------+
| %X   | %x   | %Y   | %y   |
+------+------+------+------+
| 2024 | 2024 | 2024 | 24   |
+------+------+------+------+

Voir Chaînes de format MariaDB pour une liste complète des chaînes/spécificateurs de format.

Le YEARWEEK() Fonction

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

Le 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.