Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Exemplos de DATEPART() no SQL Server


No SQL Server, o T-SQL DATEPART() A função retorna um número inteiro que representa a parte de data especificada da data especificada . Por exemplo, você pode passar em 2021-01-07 e fazer com que o SQL Server retorne apenas a parte do ano (2021 ).

Você também pode extrair a parte do tempo. Por exemplo, você pode transmitir 2018-06-02 08:24:14.3112042 e fazer com que o SQL Server retorne apenas a parte da hora (8 ).

Exemplos abaixo.


Sintaxe


Primeiro, a sintaxe. O DATEPART() sintaxe fica assim:
DATEPART ( datepart , date )

Onde datepart é a parte de date (um valor de data ou hora) para o qual um número inteiro será retornado.

Exemplo 1


Aqui está um exemplo básico onde eu retorno o componente de ano de uma data.
SELECT DATEPART(year, '2021-01-07') AS Result;

Resultado:
+----------+
| Result   |
|----------|
| 2021     |
+----------+

Exemplo 2


Neste exemplo eu atribuo uma data a uma variável, então eu uso várias instâncias de DATEPART() para recuperar diferentes partes dessa data.
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         |
+--------+-----------+---------+---------------+-------+--------+-----------+

Exemplo 3


Você também pode recuperar as várias partes de tempo da data.
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    |
+--------+----------+----------+--------------+---------------+--------------+

Exemplo 4


Você também pode recuperar o TZoffset e o ISO_WEEK datepart.

TZoffset é retornado como o número de minutos (assinado). O ISO_WEEK datepart refere-se ao sistema de data-semana ISO (parte do padrão ISO 8601), que é um sistema de numeração para 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         |
+--------------------+------------+

Neste exemplo, defino a data para um datetimeoffset formato, que inclui o deslocamento do fuso horário. O TZoffset é retornado em minutos.

Uma alternativa rápida


O T-SQL também oferece uma maneira mais concisa de retornar os componentes de dia, mês ou ano de uma data com o DAY() , MONTH() e YEAR() funções.

Eles funcionam assim:
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   |
+-------+---------+--------+

Como obter o nome do mês ou o nome do dia


Se você precisar obter o nome do mês ou do dia, use o comando DATENAME() função em vez disso. Esta função retorna os resultados como uma cadeia de caracteres e você pode retornar o mês e o dia da semana pelo nome. Aqui estão alguns DATENAME() exemplos para demonstrar o que quero dizer.