sql >> Base de Datos >  >> RDS >> Sqlserver

DATENAME() Ejemplos en SQL Server

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.