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. O
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.