sql >> Base de Datos >  >> RDS >> Sqlserver

5 formas de obtener el nombre de mes corto de una fecha en SQL Server

A veces, cuando trabaja con SQL Server (o cualquier otro DBMS), debe devolver el nombre corto durante un mes. Con esto me refiero a la abreviatura de 3 letras de un mes. Por ejemplo, necesita "diciembre" en lugar de "diciembre".

Aquí hay cuatro formas de extraer el nombre del mes abreviado de una fecha en SQL Server.

Función FORMATO()

El FORMAT() La función ha estado disponible desde SQL Server 2012 y es la forma más concisa de devolver el mes como una abreviatura de 3 letras.

He aquí un ejemplo de cómo funciona:

DECLARE @date datetime2 = '2000-01-01';
SELECT FORMAT(@date, 'MMM') AS 'FORMAT';

Resultado:

FORMAT
------
Jan   

La primera línea simplemente declara una variable y le asigna una fecha. La segunda línea es donde devolvemos el nombre corto del mes a partir de la fecha.

Funciones CAST() y DATENAME()

Esta opción proyecta la fecha como CHAR(3) , eliminando así los caracteres que siguen a los tres primeros.

He aquí un ejemplo:

DECLARE @date datetime2 = '2000-01-01';
SELECT CAST(DATENAME(month, @date) AS CHAR(3)) AS 'CAST/DATENAME';

Resultado:

CAST/DATENAME
-------------
Jan          

Las funciones LEFT() y DATENAME()

Esta opción es similar a la anterior, excepto que usa el LEFT() función para tomar los 3 caracteres más a la izquierda de la fecha.

Ejemplo:

DECLARE @date datetime2 = '2000-01-01';
SELECT LEFT(DATENAME(month, @date), 3) AS 'LEFT/DATENAME';

Resultado:

LEFT/DATENAME
-------------
Jan          

Funciones LEFT() y CONVERT()

Esta opción convierte la fecha a varchar, luego toma los primeros tres caracteres.

Ejemplo:

DECLARE @date datetime2 = '2000-01-01';
SELECT LEFT(CONVERT(varchar, @date, 100), 3) AS 'LEFT/CONVERT';

Resultado:

LEFT/CONVERT
------------
Jan         

En este ejemplo, el 100 El argumento le da estilo a la fecha para que tenga el siguiente formato:mon dd aaaa hh:miAM (o PM) . Entonces, en nuestro caso, la fecha tiene el estilo 1 de enero de 2000 12:00 a. m. .

A partir de ahí, es simplemente cuestión de cortar las tres primeras letras con LEFT() función.

Las funciones LEFT() y MONTHNAME()

Esta opción usa el MONTHNAME() Función escalar ODBC para devolver el nombre del mes. Y como en los dos ejemplos anteriores, simplemente extraemos las tres primeras letras del nombre de ese mes.

Ejemplo:

DECLARE @date datetime2 = '2000-01-01';
SELECT LEFT({fn MONTHNAME(@date)}, 3) AS 'LEFT/MONTHNAME';

Resultado:

LEFT/MONTHNAME
--------------
Jan