sql >> Base de Datos >  >> RDS >> Mysql

Cómo obtener el nombre de mes corto de una fecha en MySQL

En MySQL, puede usar el DATE_FORMAT() función con el %b especificador de formato para devolver el nombre corto del mes. Por ejemplo, puede devolver Jan o Feb en lugar de January o Feb .

Ejemplo

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

Resultado:

Jan

Aquí hay otro ejemplo que recorre los distintos meses del año:

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";

Resultado (usando salida vertical):

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

También puede devolver otras unidades de fecha y hora, pero este artículo se trata de devolver el nombre corto del mes.

Consulte Especificadores de formato de fecha de MySQL para obtener una lista de especificadores de formato que se pueden usar con DATE_FORMAT() .

Acortar el nombre completo del mes

Si necesita acortar el nombre de un mes completo, siempre puede usar una función como LEFT() para devolver solo los tres primeros caracteres (o los que necesite).

Ejemplo:

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

Resultado:

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

Alternativamente, podríamos usar una función como CAST() para convertir a un tipo de datos con solo tres caracteres, como este:

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

Resultado:

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

En este caso, recibimos una advertencia porque estamos truncando un valor más largo:

show warnings;

Resultado:

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

Acortar el nombre del mes de esta manera puede estar bien cuando se trabaja con idiomas como el inglés, pero tenga en cuenta que es posible que no arroje el mismo resultado que cuando usa el %b especificador de formato.

Para demostrar lo que quiero decir, esto es lo que sucede cuando cambio mi sesión para usar el idioma tailandés:

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;

Resultado:

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

Truncar el nombre completo del mes arroja un resultado diferente que usar %b especificador de formato para devolver el nombre corto del mes.