DATENAME (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Esta función devuelve una cadena de caracteres que representa el parámetro datepart especificado del argumento date especificado.

Para obtener una introducción sobre todos los tipos de datos y funciones de fecha y hora de Transact-SQL, vea Tipos de datos y funciones de fecha y hora (Transact-SQL).

Convenciones de sintaxis de Transact-SQL

Sintaxis

DATENAME ( datepart , date )  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

datepart
La parte específica del argumento date que DATENAME va a devolver. En esta tabla se enumeran todos los argumentos válidos de datepart.

Nota

DATENAME no acepta los equivalentes de variables definidas por el usuario para los argumentos datepart.

datepart Abreviaturas
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw, w
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns
TZoffset tz
ISO_WEEK ISOWK, ISOWW

date

Una expresión que se puede resolver en uno de los tipos de datos siguientes:

  • date
  • datetime
  • datetimeoffset
  • datetime2
  • smalldatetime
  • time

Para date, DATENAME aceptará una expresión de columna, una expresión, un literal de cadena o una variable definida por el usuario. Para evitar problemas de ambigüedad, use años de cuatro dígitos. Vea Establecer la opción de configuración del servidor Fecha límite de año de dos dígitos para obtener información sobre los años de dos dígitos.

Tipo de valor devuelto

nvarchar

Valor devuelto

  • Cada datepart y sus abreviaturas devuelven el mismo valor.

El valor devuelto depende del entorno del idioma definido mediante SET LANGUAGE y la opción de configuración de servidor Configurar el idioma predeterminado del inicio de sesión. El valor devuelto depende de SET DATEFORMAT si date es un literal de cadena de ciertos formatos. SET DATEFORMAT no cambia el valor devuelto cuando la fecha es una expresión de columna de un tipo de datos de hora o fecha.

Cuando el parámetro date tiene un argumento de tipo de datos date, el valor devuelto depende de la configuración especificada mediante SET DATEFIRST.

Argumento datepart TZoffset

Si el argumento datepart es TZoffset (tz) y el argumento date no tiene desplazamiento de zona horaria, DATEADD devuelve 0.

Argumento date smalldatetime

Si date es smalldatetime, DATENAME devuelve los segundos como 00.

Valor predeterminado devuelto por datepart que no se encuentra en el argumento date

Si el tipo de datos del argumento date no contiene el parámetro datepart especificado, DATENAME devolverá el valor predeterminado datepart solo si el argumento date tiene un valor literal.

Por ejemplo, el valor predeterminado de año-mes-día de cualquier tipo de datos date es 1900-01-01. Esta instrucción tiene argumentos de la parte de fecha para datepart, un argumento de hora para date y DATENAME devuelve 1900, January, 1, 1, Monday.

SELECT DATENAME(year, '12:10:30.123')  
    ,DATENAME(month, '12:10:30.123')  
    ,DATENAME(day, '12:10:30.123')  
    ,DATENAME(dayofyear, '12:10:30.123')  
    ,DATENAME(weekday, '12:10:30.123');  

Si date se especifica como variable o columna de tabla, y el tipo de datos de esa variable o columna no tiene especificado datepart, DATENAME devuelve el error 9810. En este ejemplo, la variable @t tiene un tipo de datos time. Se produce un error en el ejemplo porque el año de la parte de fecha no es válido para el tipo de datos time:

DECLARE @t time = '12:10:30.123';   
SELECT DATENAME(year, @t);  

Observaciones

Use DATENAME en las cláusulas siguientes:

  • GROUP BY
  • HAVING
  • ORDER BY
  • SELECT <lista>
  • WHERE

En SQL Server, DATENAME convierte implícitamente los literales de cadena como un tipo datetime2. Esto significa que DATENAME no admite el formato año-día-mes cuando la fecha se pasa como una cadena. La cadena se debe convertir explícitamente a un tipo datetime o smalldatetime para poder usar el formato año-día-mes.

Ejemplos

En este ejemplo se devuelven las partes de fecha para la fecha especificada. Sustituya un valor datepart de la tabla para el argumento datepart en la instrucción SELECT:

SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');

El conjunto de resultados es el siguiente:

datepart Valor devuelto
year, yyyy, yy 2007
quarter, qq, q 4
month, mm, m Octubre
dayofyear, dy, y 303
day, dd, d 30
week, wk, ww 44
weekday, dw Martes
hour, hh 12
minute, n 15
second, ss, s 32
millisecond, ms 123
microsecond, mcs 123456
nanosecond, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

En este ejemplo se devuelven las partes de fecha para la fecha especificada. Sustituya un valor datepart de la tabla para el argumento datepart en la instrucción SELECT:

SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');  

El conjunto de resultados es el siguiente:

datepart Valor devuelto
year, yyyy, yy 2007
quarter, qq, q 4
month, mm, m Octubre
dayofyear, dy, y 303
day, dd, d 30
week, wk, ww 44
weekday, dw Martes
hour, hh 12
minute, n 15
second, ss, s 32
millisecond, ms 123
microsecond, mcs 123456
nanosecond, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Consulte también

CAST y CONVERT (Transact-SQL)