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.