En SQL Server, la función T-SQL DATENAME() devuelve una cadena de caracteres que representa la parte de la fecha especificada. Por ejemplo, puede pasar 2021-01-07 y hacer que SQL Server devuelva sólo la parte del mes (January).

El tipo de retorno de DATENAME() es nvarchar.

Ejemplos siguientes.

Sintaxis

La sintaxis de DATENAME() es la siguiente:

DATENAME ( datepart , date )

Donde datepart es la parte de date (un valor de fecha u hora) para la que se devolverá una cadena de caracteres.

Ejemplo 1

Aquí hay un ejemplo básico en el que devuelvo el componente del 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 utilizo múltiples 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 puedes 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 la parte de la fecha TZoffset y la parte de la fecha ISO_WEEK.

La parte TZoffset se devuelve como el número de minutos (con signo). La parte de la fecha ISO_WEEK se refiere al sistema de fecha de la semana ISO (parte de la norma ISO 8601), que es un sistema de numeración para las 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, establecí la fecha en un formato datetimeoffset, que incluye el desplazamiento de la zona horaria. El TZoffset se devuelve en minutos.

Los resultados de DATENAME() suelen parecerse a los 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á los meses (y el componente del día de la semana) en forma numérica (por ejemplo, 1 en lugar de January).

Obtención del nombre abreviado 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 maneras de obtener el nombre abreviado del mes de una fecha en SQL Server.

Deja una respuesta

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