DATENAME (Transact-SQL)
Devuelve una cadena de caracteres que representa el parámetro datepart especificado del parámetro date especificado.
Para obtener información general acerca de todos los tipos de datos y funciones de fecha y hora de Transact-SQL, consulte Funciones de fecha y hora (Transact-SQL). Para obtener información y ejemplos comunes a los tipos de datos y funciones de fecha y hora, consulte Usar datos de fecha y hora.
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
hour
hh
minute
mi, n
second
ss, s
millisecond
ms
microsecond
mcs
nanosecond
ns
TZoffset
tz
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, expresión de columna, variable definida por el usuario o 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 two digit year cutoff (opción).
Tipo devuelto
nvarchar
Valor devuelto
- Cada datepart y sus abreviaturas devuelven el mismo valor.
El valor devuelto depende del entorno del idioma definido por SET LANGUAGE y 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 afecta al valor devuelto cuando la fecha es una expresión de columna de un tipo de datos de hora o fecha.
Para las versiones de SQL Server superiores a SQL Server 2000, si 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.
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.
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');
El valor predeterminado hora-minuto-segundo para el tipo de datos time es 00:00:00. La instrucción siguiente tiene argumentos de la parte de hora para datepart, un argumento de fecha para date y devuelve 0, 0, 0.
SELECT DATENAME(hour, '2007-06-01')
,DATENAME(minute, '2007-06-01')
,DATENAME(second, '2007-06-01');
Comentarios
Se puede usar DATENAME en la lista de selección, cláusulas WHERE, HAVING, GROUP BY y ORDER BY. En SQL Server 2008 R2, DATENAME convierte implícitamente literales de cadena como tipo datetime2. Esto significa que DATEDIFF ya no admite el formato ADM cuando la fecha se pasa como una cadena. Se debe convertir explícitamente la cadena a un tipo datetime o smalldatetime para utilizar el formato ADM.
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 |
Martes |
hour, hh |
12 |
minute, n |
15 |
second, ss, s |
32 |
millisecond, ms |
123 |
microsecond, mcs |
123456 |
nanosecond, ns |
123456700 |
TZoffset, tz |
310 |