- 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
DATENAME
no 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)