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:
Code language: SQL (Structured Query Language) (sql)DATEDIFF( date_part , start_date , end_date)
The DATEDIFF()
function accepts three arguments: date_part
start_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 entrestart_date
eend_date
. Ver as partes de datas válidas na tabela abaixo. -
start_date
eend_date
são as datas a serem comparadas. Devem ser resolvidas com valores do tipoDATE
DATETIME
DATETIMEOFFSET
,DATETIME2
SMALLATETIME
, ouTIME
.
A tabela seguinte lista os valores válidos de date_part
:
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:
Code language: SQL (Structured Query Language) (sql)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;
Aqui está a saída:
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:
Code language: SQL (Structured Query Language) (sql)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;
Aqui é a saída:
Neste tutorial, aprendeu como utilizar o SQL Server DATEDIFF()
função para calcular a diferença entre dois valores de data.