En SQL Server, el T-SQL DATENAME()
La función devuelve una cadena de caracteres que representa el datepart especificado. de la fecha especificada . Por ejemplo, puede pasar 2021-01-07
y hacer que SQL Server devuelva solo la parte del mes (January
).
El tipo de devolución para DATENAME()
es nvarchar .
Ejemplos a continuación.
Sintaxis
El DATENAME()
la sintaxis es así:
DATENAME ( datepart , date )
Donde datepart
es la parte de date
(un valor de fecha u hora) para el que se devolverá una cadena de caracteres.
Ejemplo 1
Aquí hay un ejemplo básico en el que devuelvo el componente de mes de una fecha.
SELECT DATENAME(month, '2021-01-07') AS Result;
Resultado:
+----------+ | Result | |----------| | January | +----------+
Ejemplo 2
En este ejemplo, asigno una fecha a una variable, luego uso varias instancias de DATEPART()
para recuperar diferentes partes de esa fecha.
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042'; SELECT DATENAME(year, @date) AS Year, DATENAME(quarter, @date) AS Quarter, DATENAME(month, @date) AS Month, DATENAME(dayofyear, @date) AS 'Day of Year', DATENAME(day, @date) AS Day, DATENAME(week, @date) AS Week, DATENAME(weekday, @date) AS Weekday;
Resultado:
+--------+-----------+---------+---------------+-------+--------+-----------+ | Year | Quarter | Month | Day of Year | Day | Week | Weekday | |--------+-----------+---------+---------------+-------+--------+-----------| | 2018 | 2 | June | 153 | 2 | 22 | Saturday | +--------+-----------+---------+---------------+-------+--------+-----------+
Ejemplo 3
También puede recuperar las distintas partes de tiempo de la fecha.
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042'; SELECT DATENAME(hour, @date) AS Hour, DATENAME(minute, @date) AS Minute, DATENAME(second, @date) AS Second, DATENAME(millisecond, @date) AS Millsecond, DATENAME(microsecond, @date) AS Microsecond, DATENAME(nanosecond, @date) AS Nanosecond;
Resultado:
+--------+----------+----------+--------------+---------------+--------------+ | Hour | Minute | Second | Millsecond | Microsecond | Nanosecond | |--------+----------+----------+--------------+---------------+--------------| | 8 | 24 | 14 | 311 | 311204 | 311204200 | +--------+----------+----------+--------------+---------------+--------------+
Ejemplo 4
También puede recuperar el TZoffset
y la ISO_WEEK
partefecha.
El TZoffset
se devuelve como el número de minutos (con signo). La ISO_WEEK
datepart se refiere al sistema ISO semana-fecha (parte del estándar ISO 8601) que es un sistema de numeración de semanas.
DECLARE @date datetimeoffset = '2018-06-02 08:24:14.3112042 +08:00'; SELECT DATENAME(TZoffset, @date) AS 'Time Zone Offset', DATENAME(ISO_WEEK, @date) AS 'ISO_WEEK';
Resultado:
+--------------------+------------+ | Time Zone Offset | ISO_WEEK | |--------------------+------------| | +08:00 | 22 | +--------------------+------------+
En este ejemplo, configuré la fecha en un datetimeoffset
formato, que incluye el desplazamiento de la zona horaria. El TZoffset
se devuelve en minutos.
Los resultados de DATENAME()
a menudo se parecerá a los resultados de DATEPART()
(debido a que la mayoría de las partes de la fecha son numéricas). Sin embargo, DATEPART()
devuelve un número entero en lugar de una cadena de caracteres. Por lo tanto DATEPART()
devolverá meses (y el componente de día de la semana) en forma numérica (por ejemplo, 1
en lugar de January
).
Obtención del nombre corto del mes
Si necesita el nombre del mes, pero en su forma abreviada de 3 letras (por ejemplo, Jan
en lugar de January
), consulte mi artículo 5 formas de obtener el nombre de mes corto a partir de una fecha en SQL Server.