DATENAME (Transact-SQL)
Se aplica a: SQL Server
Azure SQL Database
Azure SQL Instancia administrada
Azure Synapse Analytics Analytics
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 |