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

Ejemplos de DATEPART() en SQL Server

En SQL Server, el T-SQL DATEPART() La función devuelve un número entero 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 año (2021 ).

También puede extraer la porción de tiempo. Por ejemplo, puede pasar 2018-06-02 08:24:14.3112042 y hacer que SQL Server devuelva solo la parte de la hora (8 ).

Ejemplos a continuación.

Sintaxis

Primero, la sintaxis. El DATEPART() la sintaxis es así:

DATEPART ( datepart , date )

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

Ejemplo 1

Este es un ejemplo básico en el que devuelvo el componente del año de una fecha.

SELECT DATEPART(year, '2021-01-07') AS Result;

Resultado:

+----------+
| Result   |
|----------|
| 2021     |
+----------+

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 
    DATEPART(year, @date) AS Year,
    DATEPART(quarter, @date) AS Quarter,
    DATEPART(month, @date) AS Month,
    DATEPART(dayofyear, @date) AS 'Day of Year',
    DATEPART(day, @date) AS Day,
    DATEPART(week, @date) AS Week,
    DATEPART(weekday, @date) AS Weekday;

Resultado:

+--------+-----------+---------+---------------+-------+--------+-----------+
| Year   | Quarter   | Month   | Day of Year   | Day   | Week   | Weekday   |
|--------+-----------+---------+---------------+-------+--------+-----------|
| 2018   | 2         | 6       | 153           | 2     | 22     | 7         |
+--------+-----------+---------+---------------+-------+--------+-----------+

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 
    DATEPART(hour, @date) AS Hour,
    DATEPART(minute, @date) AS Minute,
    DATEPART(second, @date) AS Second,
    DATEPART(millisecond, @date) AS Millsecond,
    DATEPART(microsecond, @date) AS Microsecond,
    DATEPART(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 
    DATEPART(TZoffset, @date) AS 'Time Zone Offset',
    DATEPART(ISO_WEEK, @date) AS 'ISO_WEEK';

Resultado:

+--------------------+------------+
| Time Zone Offset   | ISO_WEEK   |
|--------------------+------------|
| 480                | 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.

Una alternativa rápida

T-SQL también ofrece una forma más concisa de devolver los componentes de día, mes o año de una fecha con DAY() , MONTH() y YEAR() funciones.

Funcionan así:

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
SELECT 
    DAY(@date) AS DAY,
    MONTH(@date) AS MONTH,
    YEAR(@date) AS YEAR;

Resultado:

+-------+---------+--------+
| DAY   | MONTH   | YEAR   |
|-------+---------+--------|
| 2     | 6       | 2018   |
+-------+---------+--------+

Obtener el nombre del mes o el nombre del día

Si necesita obtener el nombre del mes o el nombre del día, use DATENAME() función en su lugar. Esta función devuelve los resultados como una cadena de caracteres y puede devolver el mes y el día de la semana por nombre. Estos son algunos DATENAME() ejemplos para demostrar lo que quiero decir.