Share via


DATENAME (Transact-SQL)

Devuelve una cadena de caracteres que representa el parámetro datepart especificado del parámetro date especificado.

Para obtener una introducción de 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).

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

Sintaxis

DATENAME ( datepart , date )

Argumentos

  • datepart
    Es una parte de la date que se devuelve. En la siguiente tabla se recogen los argumentos válidos de datepart. Los equivalentes de variables definidas por el usuario no son válidos.

    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
    Es una expresión que se puede resolver como un valor time, date, smalldatetime, datetime, datetime2 o datetimeoffset. date puede ser una expresión, una expresión de columna, una variable definida por el usuario o un literal de cadena.

    Para evitar la ambigüedad, use años de cuatro dígitos. Parta obtener información sobre los años de dos dígitos, consulte Establecer la opción de configuración del servidor Fecha límite de año de dos dígitos.

Tipo 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 Establecer la opción de configuración del servidor Idioma predeterminado en el inicio de sesión. El valor devuelto depende de SET DATEFORMAT si date es un literal de cadena de ciertos formatos. SET DATEFORMAT no afecta al 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 ajuste de zona horaria, se devuelve 0.

Argumento date smalldatetime

Si date es smalldatetime, los segundos se devuelven 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, se devolverá el valor predeterminado de datepart solo cuando se especifique un lateral para date.

Por ejemplo, el valor predeterminado de año-mes-día de cualquier tipo de datos date es 1900-01-01. La instrucción siguiente tiene argumentos de la parte de fecha para datepart, un argumento de hora para date y 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 como columna de tabla y el tipo de datos de esa variable o columna no tiene especificado datepart, se devuelve el error 9810. En el ejemplo de código siguiente se produce un error porque la parte de fecha de año no es válida para el tipo de datos time que se declara para la variable @t.

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

Comentarios

Se puede usar DATENAME en la lista de selección, cláusulas WHERE, HAVING, GROUP BY y ORDER BY.

En SQL Server 2012, 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 se pasa la fecha como 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 el ejemplo siguiente se obtienen las partes de fecha para la fecha especificada.

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

Jueves

hour, hh

12

minute, n

15

second, ss, s

32

millisecond, ms

123

microsecond, mcs

123456

nanosecond, ns

123456700

TZoffset, tz

310

ISO_WEEK, ISOWK, ISOWW

44

Vea también

Referencia

CAST y CONVERT (Transact-SQL)