DATENAME (Transact-SQL)

  • 07/29/2017
  • 3 minutos para leer
    • c
    • j
    • r
    • M
    • M
    • +9

Se aplica a: SQL Server (todas las versiones compatibles) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse

Esta función devuelve una cadena de caracteres que representa la parte de fecha especificada de la fecha especificada.

Vea Tipos de datos y funciones de fecha y hora (Transact-SQL) para obtener una descripción general de todos los tipos de datos y funciones de fecha y hora de Transact-SQL.

Convenciones de sintaxis de Transact-SQL

Sintaxis

DATENAME ( datepart , date ) 

Nota

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

Argumentos

datepart
La parte específica del argumento de fecha que devolverá DATENAME. Esta tabla enumera todos los argumentos datepart válidos.

Nota

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

datepart Abreviaturas
año yy, aaaa
trimestre qq, q
mes mm, m
día del año dy, y
día dd, d
semana wk, ww
día de la semana dw, w
hora hh
minuto mi, n
segundo ss, s
milisegundo ms
microsegundo mcs
nanosegundo ns
TZoffset tz
ISO_WEEK ISOWK, ISOWW

fecha

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

  • fecha
  • tiempo de la fecha
  • desplazamiento del tiempo de la fecha
  • tiempo de la fecha2
  • tiempo de la fecha pequeño
  • tiempo

Para la fecha, DATENAME aceptará una expresión de columna, expresión, literal de cadena o variable definida por el usuario. Utilice años de cuatro dígitos para evitar problemas de ambigüedad. Consulte la opción de configuración del servidor Configurar el año de dos dígitos para obtener información sobre los años de dos dígitos.

Tipo de retorno

nvarchar

Valor de retorno

  • Cada parte de la fecha y sus abreviaturas devuelven el mismo valor.

El valor de retorno depende del entorno de idioma establecido mediante el uso de SET LANGUAGE, y de la opción de configuración del servidor Configurar el idioma por defecto del inicio de sesión. El valor de retorno depende de SET DATEFORMAT si la fecha es una cadena literal de algunos formatos. SET DATEFORMAT no cambia el valor de retorno cuando la fecha es una expresión de columna de un tipo de datos de fecha u hora.

Cuando el parámetro de fecha tiene un argumento de tipo de datos de fecha, el valor de retorno depende de la configuración especificada por SET DATEFIRST.

TZoffset datepart Argument

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

smalldatetime date Argument

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

Default Returned for a datepart That Is Not in the date Argument

Si el tipo de datos del argumento de fecha no tiene la parte de fecha especificada, DATENAME devolverá el valor por defecto para esa parte de fecha sólo si el argumento de fecha tiene un literal .

Por ejemplo, el año-mes-día por defecto para cualquier tipo de datos de fecha es 1900-01-01. Esta sentencia tiene argumentos de parte de fecha para datepart, un argumento de tiempo 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 la fecha se especifica como una variable o columna de tabla, y el tipo de datos para esa variable o columna no tiene el datepart especificado, DATENAME devolverá el error 9810. En este ejemplo, la variable @t tiene un tipo de datos de tiempo. El ejemplo falla porque la parte de fecha año no es válida para el tipo de datos de tiempo:

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

Observaciones

Use DATENAME en las siguientes cláusulas:

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

En SQL Server, DATENAME convierte implícitamente los literales de cadena en un tipo datetime2. En otras palabras, DATENAME no admite el formato YDM cuando la fecha se pasa como una cadena. Debe convertir explícitamente la cadena en un tipo datetime o smalldatetime para utilizar el formato YDM.

Ejemplos

Este ejemplo devuelve las partes de fecha para la fecha especificada. Sustituya un valor datepart de la tabla por el argumento datepart en la sentencia SELECT:

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

Aquí tiene el conjunto de resultados.

datepart Valor de retorno
año, aaaa, aaaa 2007
trimestre, qq, q 4 mes, mm, m octubre
día del año, dy, y 303
día, dd, d 30
semana, wk, ww 44
día de la semana, dw Martes
hora, hh 12
minuto, n 15
segundo, ss, s 32
milisegundo, ms 123
microsegundo, mcs 123456
nanosegundo, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Azure Synapse Analytics and Parallel Data Warehouse

Este ejemplo devuelve las partes de fecha para la fecha especificada. Sustituya el argumento datepart por un valor de parte de fecha de la tabla en la sentencia SELECT:

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

Aquí tiene el conjunto de resultados.

datepart Valor de retorno
año, aaaa, aa 2007
trimestre, qq, q 4 mes, mm, m Octubre
día del año, dy, y 303
día, dd, d 30
semana, wk, ww 44
día de la semana, dw Martes
hora, hh 12
minuto, n 15
segundo, ss, s 32
milisegundo, ms 123
microsegundo, mcs 123456
nanosegundo, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Véase también

CAST y CONVERT (Transact-SQL)

Deja una respuesta

Tu dirección de correo electrónico no será publicada.