sql >> Base de Datos >  >> RDS >> MariaDB

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

En MariaDB, puede usar el DATE_FORMAT() función para devolver varias partes de fecha de una fecha. Una de las cosas que puede devolver es el nombre corto del mes. Por ejemplo Nov o Dec (en lugar de November o Dec ).

El especificador de formato "Nombre de mes corto" (%b )

La clave para devolver el nombre corto del mes cuando se usa DATE_FORMAT() función es usar el especificador de formato aplicable.

En MariaDB, el especificador de formato para el nombre corto del mes es:%b

Ejemplo

Aquí hay un ejemplo para demostrarlo:

SELECT DATE_FORMAT('2023-12-25', '%b');

Resultado:

+---------------------------------+
| DATE_FORMAT('2023-12-25', '%b') |
+---------------------------------+
| Dec                             |
+---------------------------------+

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

SELECT 
    DATE_FORMAT('2023-01-25', '%b') AS "1",
    DATE_FORMAT('2023-02-25', '%b') AS "2",
    DATE_FORMAT('2023-03-25', '%b') AS "3",
    DATE_FORMAT('2023-04-25', '%b') AS "4",
    DATE_FORMAT('2023-05-25', '%b') AS "5",
    DATE_FORMAT('2023-06-25', '%b') AS "6",
    DATE_FORMAT('2023-07-25', '%b') AS "7",
    DATE_FORMAT('2023-08-25', '%b') AS "8",
    DATE_FORMAT('2023-09-25', '%b') AS "9",
    DATE_FORMAT('2023-10-25', '%b') AS "10",
    DATE_FORMAT('2023-11-25', '%b') AS "11",
    DATE_FORMAT('2023-12-25', '%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 específicamente de devolver el nombre corto del mes. Consulte Cadenas de formato de MariaDB para obtener una lista de especificadores de formato que se pueden usar con DATE_FORMAT() .

Otros enfoques

Hay otras formas de obtener el nombre corto del mes a partir de una fecha que implican cortar la primera parte del mes.

Sin embargo, esto puede ser más propenso a errores que el método anterior (además, es más complicado). Podría obtener algunos resultados inesperados al usar este método, especialmente cuando trabaja con diferentes idiomas.

Aquí hay algunos ejemplos para demostrar lo que quiero decir.

En lugar de usar el %b especificador de formato como hicimos en el ejemplo anterior, podríamos usar el %M especificador de formato para devolver el nombre completo del mes, luego devuelve acortar ese resultado con una función como LEFT() .

Ejemplo:

SELECT 
    DATE_FORMAT('2023-10-25', '%M') AS Full,
    LEFT(DATE_FORMAT('2023-10-25', '%M'), 3) AS Short;

Resultado:

+---------+-------+
| Full    | Short |
+---------+-------+
| October | Oct   |
+---------+-------+

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('2023-10-25', '%M') AS Full,
    CAST(DATE_FORMAT('2023-10-25', '%M') AS CHAR(3)) AS Short;

Resultado:

+---------+-------+
| Full    | Short |
+---------+-------+
| October | Oct   |
+---------+-------+

Esto funciona bien cuando se trabaja con el idioma inglés (y quizás con otros idiomas). Pero veamos qué sucede cuando cambiamos a un idioma diferente, por ejemplo, tailandés:

SELECT 
    DATE_FORMAT('2023-10-25', '%M', 'th_TH') AS Full,
    LEFT(DATE_FORMAT('2023-10-25', '%M', 'th_TH'), 3) AS Short;

Resultado:

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

Sin embargo, esto es lo que sucede cuando usamos el %b especificador de formato para devolver el nombre corto del mes:

SELECT 
    DATE_FORMAT('2023-10-25', '%M', 'th_TH') AS Full,
    DATE_FORMAT('2023-10-25', '%b', 'th_TH') AS Short;

Resultado:

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

Devuelve un resultado diferente.

Así que recomendaría usar el %b especificador de formato siempre que sea posible.