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

Comment obtenir le nom court du mois à partir d'une date dans MySQL

Dans MySQL, vous pouvez utiliser le DATE_FORMAT() fonction avec le %b spécificateur de format pour renvoyer le nom court du mois. Par exemple, vous pouvez renvoyer Jan ou Feb au lieu de January ou February .

Exemple

SELECT DATE_FORMAT('2035-01-18', '%b');

Résultat :

Jan

Voici un autre exemple qui s'étend sur les différents mois de l'année :

SELECT 
    DATE_FORMAT('2035-01-18', '%b') AS "1",
    DATE_FORMAT('2035-02-18', '%b') AS "2",
    DATE_FORMAT('2035-03-18', '%b') AS "3",
    DATE_FORMAT('2035-04-18', '%b') AS "4",
    DATE_FORMAT('2035-05-18', '%b') AS "5",
    DATE_FORMAT('2035-06-18', '%b') AS "6",
    DATE_FORMAT('2035-07-18', '%b') AS "7",
    DATE_FORMAT('2035-08-18', '%b') AS "8",
    DATE_FORMAT('2035-09-18', '%b') AS "9",
    DATE_FORMAT('2035-10-18', '%b') AS "10",
    DATE_FORMAT('2035-11-18', '%b') AS "11",
    DATE_FORMAT('2035-12-18', '%b') AS "12";

Résultat (en utilisant la sortie verticale) :

 1: Jan
 2: Feb
 3: Mar
 4: Apr
 5: May
 6: Jun
 7: Jul
 8: Aug
 9: Sep
10: Oct
11: Nov
12: Dec

Vous pouvez également renvoyer d'autres unités de date et d'heure, mais cet article concerne uniquement le renvoi du nom abrégé du mois.

Voir les spécificateurs de format de date MySQL pour une liste des spécificateurs de format qui peuvent être utilisés avec DATE_FORMAT() .

Raccourcissez le nom du mois complet

Si vous avez besoin de raccourcir un nom de mois complet, vous pouvez toujours utiliser une fonction comme LEFT() pour renvoyer uniquement les trois premiers caractères (ou le nombre dont vous avez besoin).

Exemple :

SELECT 
    DATE_FORMAT('2035-09-18', '%M') AS Full,
    LEFT(DATE_FORMAT('2035-09-18', '%M'), 3) AS Short;

Résultat :

+-----------+-------+
| Full      | Short |
+-----------+-------+
| September | Sep   |
+-----------+-------+

Nous pourrions également utiliser une fonction comme CAST() pour convertir en un type de données avec seulement trois caractères, comme ceci :

SELECT 
    DATE_FORMAT('2035-09-18', '%M') AS Full,
    CAST(DATE_FORMAT('2035-09-18', '%M') AS CHAR(3)) AS Short;

Résultat :

+-----------+-------+
| Full      | Short |
+-----------+-------+
| September | Sep   |
+-----------+-------+
1 row in set, 1 warning (0.00 sec)

Dans ce cas, nous recevons un avertissement car nous tronquons une valeur plus longue :

show warnings;

Résultat :

+---------+------+------------------------------------------------+
| Level   | Code | Message                                        |
+---------+------+------------------------------------------------+
| Warning | 1292 | Truncated incorrect CHAR(3) value: 'September' |
+---------+------+------------------------------------------------+

Raccourcir le nom du mois comme celui-ci peut convenir lorsque vous travaillez avec des langues telles que l'anglais, mais gardez à l'esprit qu'il peut ne pas renvoyer le même résultat que lors de l'utilisation de %b spécificateur de format.

Pour illustrer ce que je veux dire, voici ce qui se passe lorsque je change de session pour utiliser la langue thaï :

SET lc_time_names = 'th_TH';
SELECT 
    DATE_FORMAT('2023-10-25', '%M') AS Full,
    LEFT(DATE_FORMAT('2023-10-25', '%M'), 3) AS Truncated,
    DATE_FORMAT('2023-10-25', '%b') AS Short;

Résultat :

+--------------------+-----------+----------+
| Full               | Truncated | Short    |
+--------------------+-----------+----------+
| ตุลาคม             | ตุล        | ต.ค.     |
+--------------------+-----------+----------+

Tronquer le nom du mois complet renvoie un résultat différent de l'utilisation de %b spécificateur de format pour renvoyer le nom court du mois.