SQL Server DATEDIFF Function

Summary: neste tutorial, aprenderá como usar o SQL Server DATEDIFF() função para calcular o número de anos, meses, semanas, dias,etc, entre duas datas.

SQL Server DATEDIFF() overview

Para calcular a diferença entre duas datas em anos, meses, semanas, etc., utiliza-se a função DATEDIFF() function:

DATEDIFF( date_part , start_date , end_date)
Code language: SQL (Structured Query Language) (sql)

The DATEDIFF() function accepts three arguments: date_partstart_date, e end_date.

  • date_part é a parte da data, por exemplo, um ano, um trimestre, um mês, uma semana que se pretende comparar entre start_date e end_date. Ver as partes de datas válidas na tabela abaixo.
  • start_date e end_date são as datas a serem comparadas. Devem ser resolvidas com valores do tipo DATEDATETIMEDATETIMEOFFSET, DATETIME2SMALLATETIME, ou TIME.

A tabela seguinte lista os valores válidos de date_part:

dia do ano

hora

>microsecond

date_part abbreviations
year yyy, yyyy
quarter qq, q
mês mm, m
dy, y
day dd, d
semana wk, ww
hhh
minuto mi, n
second ss, s
millisecond ms
mcs
nanossegundo ns

a DATEDIFF() função retorna um valor inteiro indicando a diferença entre a start_date e end_date, com a unidade especificada por date_part.

O DATEDIFF() função retorna um erro se o resultado estiver fora do intervalo para o inteiro (-2.147.483.648 a +2.147.483.647). Neste caso, deve usar a função DATEDIFF_BIG() em vez disso.

SQL Server DATEDIFF() function examples

Levemos tomar alguns exemplos de utilização da função DATEDIFF() para a compreender melhor.

A) Usando a função DATEDIFF() para comparar as diferenças entre dois valores de datas

Este exemplo usa a função DATEDIFF() para comparar a diferença entre duas datas em várias partes de datas:

DECLARE @start_dt DATETIME2= '2019-12-31 23:59:59.9999999', @end_dt DATETIME2= '2020-01-01 00:00:00.0000000';SELECT DATEDIFF(year, @start_dt, @end_dt) diff_in_year, DATEDIFF(quarter, @start_dt, @end_dt) diff_in_quarter, DATEDIFF(month, @start_dt, @end_dt) diff_in_month, DATEDIFF(dayofyear, @start_dt, @end_dt) diff_in_dayofyear, DATEDIFF(day, @start_dt, @end_dt) diff_in_day, DATEDIFF(week, @start_dt, @end_dt) diff_in_week, DATEDIFF(hour, @start_dt, @end_dt) diff_in_hour, DATEDIFF(minute, @start_dt, @end_dt) diff_in_minute, DATEDIFF(second, @start_dt, @end_dt) diff_in_second, DATEDIFF(millisecond, @start_dt, @end_dt) diff_in_millisecond;
Code language: SQL (Structured Query Language) (sql)

Aqui está a saída:

SQL Server DATEDIFF Function with variables example

B) Usando a função DATEDIFF() com tabela exemplo de coluna

O exemplo seguinte utiliza a função DATEDIFF() para comparar a data de entrega solicitada com a data do navio em dias e devolução se a encomenda estiver emtempo ou tarde:

SELECT order_id, required_date, shipped_date, CASE WHEN DATEDIFF(day, required_date, shipped_date) < 0 THEN 'Late' ELSE 'OnTime' END shipmentFROM sales.ordersWHERE shipped_date IS NOT NULLORDER BY required_date;
Code language: SQL (Structured Query Language) (sql)

Aqui é a saída:

ServidorSQL DATEDIFF Exemplo de função

Neste tutorial, aprendeu como utilizar o SQL Server DATEDIFF() função para calcular a diferença entre dois valores de data.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *