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

3 formas de obtener el nombre del mes a partir de una fecha en SQL Server (T-SQL)

Cuando usa SQL Server, tiene algunas opciones diferentes cuando necesita devolver el nombre del mes de una fecha usando T-SQL. Por el nombre del mes, no me refiero al número del mes (como 07 ). Me refiero al nombre completo del mes (como julio ).

Por ejemplo, cuando se da una fecha de 2018-07-01 , quieres julio para ser devuelto.

Este artículo presenta tres formas de devolver el nombre del mes de una fecha en SQL Server usando T-SQL.

Función FORMATO()

El FORMAT() La función devuelve un valor con el formato especificado y la referencia cultural opcional. Puede usarlo para devolver el nombre del mes de una fecha.

He aquí un ejemplo:

DECLARE @date datetime2 = '2018-07-01';
SELECT FORMAT(@date, 'MMMM') AS Result;

Resultado:

+----------+
| Result   |
|----------|
| July     |
+----------+

En este caso proporcionamos una cadena de formato de MMMM que es una cadena de formato de fecha y hora personalizada para devolver el nombre del mes.

Lo bueno del FORMAT() función es que acepta un argumento opcional que le permite especificar la cultura a usar.

Estos son algunos ejemplos:

DECLARE @date datetime2 = '2018-07-01';
SELECT 
    FORMAT(@date, 'MMMM', 'en-US') AS 'en-US',
    FORMAT(@date, 'MMMM', 'es-es') AS 'es-es',
    FORMAT(@date, 'MMMM', 'de-de') AS 'de-de',
    FORMAT(@date, 'MMMM', 'zh-cn') AS 'zh-cn';

Resultado:

+---------+---------+---------+---------+
| en-US   | es-es   | de-de   | zh-cn   |
|---------+---------+---------+---------|
| July    | julio   | Juli    | 七月    |
+---------+---------+---------+---------+

Si no proporciona el argumento cultural, se usa el idioma de la sesión actual. Si no está seguro de qué idioma está usando la sesión actual, aquí hay 3 formas de obtener el idioma de la sesión actual. Si encuentra que necesita cambiar el idioma, aquí le mostramos cómo configurarlo a otro idioma.

También puede usar el FORMAT() función para obtener el nombre del mes abreviado. Para hacer esto, simplemente use MMM (tres M s en lugar de cuatro).

Aquí hay un ejemplo que devuelve tanto el nombre del mes abreviado como el nombre completo del mes:

DECLARE @date datetime2(0) = '2028-09-01';
SELECT 
    FORMAT(@date, 'MMM', 'en-US') 'en-US',
    FORMAT(@date, 'MMM', 'es-es') 'es-es',
    FORMAT(@date, 'MMM', 'it') 'it'
UNION ALL
SELECT 
    FORMAT(@date, 'MMMM', 'en-US'),
    FORMAT(@date, 'MMMM', 'es-es'),
    FORMAT(@date, 'MMMM', 'it');

Resultado:

+-----------+------------+-----------+
| en-US     | es-es      | it        |
|-----------+------------+-----------|
| Sep       | sep.       | set       |
| September | septiembre | settembre |
+-----------+------------+-----------+

Esta es solo una de las muchas formas de obtener el nombre abreviado del mes a partir de una fecha (aunque se puede decir que este método es el mejor). Hay al menos cuatro formas más de devolver el nombre del mes abreviado de una fecha.

Función DATENAME()

El DATENAME() la función es similar a DATEPART() función, excepto que devuelve el nombre de la parte de la fecha especificada (pero solo cuando se aplica un nombre). Eso significa que devuelve el nombre del día de la semana o el nombre del mes si eso es lo que necesita.

Aquí se explica cómo obtener el nombre del mes con esta función:

DECLARE @date datetime2 = '2018-07-01';
SELECT DATENAME(month, @date) AS Result;

Resultado:

+----------+
| Result   |
|----------|
| July     |
+----------+

La función escalar ODBC MONTHNAME()

Hay una función escalar ODBC específicamente para devolver el nombre del mes de una fecha. Su nombre es MONTHNAME() , y dice así:

DECLARE @date datetime2 = '2018-07-01';
SELECT {fn MONTHNAME(@date)} AS Result;

Resultado:

+----------+
| Result   |
|----------|
| July     |
+----------+

Cuando se usan funciones escalares de ODBC en T-SQL, están rodeadas por llaves ({} ) y el nombre de la función tiene el prefijo fn .

Si necesita obtener el nombre abreviado del mes, consulte 5 formas de obtener el nombre abreviado del mes a partir de una fecha en SQL Server.