Curso
O que é o DATEDIFF() função?
A função DATEDIFF() retorna o intervalo entre dois registros de data e hora ou valores de data em uma unidade especificada.
DATEDIFF() syntax
DATEDIFF(datepart, startdate, enddate)
|
Parâmetro |
O que é isso? |
|
|
Um parâmetro obrigatório. Essa é a unidade na qual |
|
|
Um required que significa um valor de data e hora que indica a data de início. |
|
|
Um required que significa um valor de data e hora que indica a data final. |
datepart syntax
O parâmetro datepart pode assumir vários valores, incluindo os seguintes
- Ano:
year,y,yy, ouyyyy - Trimestre:
quarter,qq,q - Mês:
month,mm,m - Dia:
dayofyear,day,dd,d - Semana:
week,wk,ww - Hora:
hour,hh - Minuto:
minute,mi,n - Segundo:
second,ss,s - Milissegundos:
millisecond,ms - Microssegundo:
microsecond,mcs - Nanossegundo:
nanosecond,ns
Observe que o endereço datepart não deve ser colocado entre aspas. Por exemplo, a sintaxe a seguir está correta:
DATEDIFF(year, ‘2022-01-01', ‘2022-01-02')
A afirmação a seguir está incorreta.
DATEDIFF(‘year', ‘2022-01-01', ‘2022-01-02')
DATEDIFF() exemplos
Ao trabalhar com DATEDIFF(), os resultados podem ser valores positivos ou negativos. Se enddate for posterior a startdate, então DATEDIFF() retornará um valor positivo. Se enddate for anterior a startdate, DATEDIFF() retornará um valor negativo.
Exemplo 1: Encontre a diferença entre duas datas
SELECT DATEDIFF(timepart, ‘2022-12-31', ‘2024-06-01')
|
Consulta |
Saída |
|
|
1 |
|
|
2 |
|
|
6 |
|
|
153 |
|
|
21 |
Exemplo 2: Encontre a diferença entre dois registros de data e hora
SELECT DATEDIFF(datepart, '2023-12-31 00:00:00, '2023-12-31 00:59:59')
|
Consulta |
Saída |
|
|
0 |
|
|
59 |
|
|
3599 |
|
|
3599000 |
Exemplo 3: Encontre a diferença entre duas colunas de datas
Considere a tabela sales.orders, que contém essas colunas:
order_date(quando o pedido é feito)shipped_date(quando o pedido for enviado)
Para rastrear o tempo de entrega da remessa, podemos usar a função DATEDIFF().
SELECT
order_id,
order_date,
shipped_date,
DATEDIFF(day, order_date, shipped_date) order_to_ship_days
FROM sales.orders
|
|
|
|
|
|
1 |
2016-01-01T00:00:00.000Z |
2016-01-03T00:00:00.000Z |
2 |
|
2 |
2016-01-01T00:00:00.000Z |
2016-01-03T00:00:00.000Z |
2 |
|
3 |
2016-01-02T00:00:00.000Z |
2016-01-03T00:00:00.000Z |
1 |
Exemplo 4. Encontre o intervalo entre a data de hoje e uma coluna
Usando a tabela sales.orders como no Exemplo 3, podemos usar DATEDIFF() para encontrar o intervalo entre a data de hoje e a data em que um pedido é feito.
SELECT
order_id,
order_date,
GETDATE() AS todays_date,
DATEDIFF(day, order_date, GETDATE()) AS order_to_today -- interval between order_date with today's date
FROM sales.orders
|
|
|
|
|
|
1 |
2016-01-01T00:00:00.000Z |
2022-10-09T02:47:00.403Z |
2473 |
|
2 |
2016-01-01T00:00:00.000Z |
2022-10-09T02:47:00.403Z |
2473 |
|
3 |
2016-01-02T00:00:00.000Z |
2022-10-09T02:47:00.403Z |
2472 |
Notas adicionais
A função DATEDIFF() retornará um erro se o resultado estiver fora do intervalo (ou seja, o valor for maior que +2.147.483.647 ou menor que -2.147.483.647). Nesse caso, a função DATEDIFF_BIG() é adequada.
Requisitos técnicos
Funciona no SQL Server (a partir de 2008), no Banco de Dados SQL do Azure, no Azure SQL Data Warehouse, no Parallel Data Warehouse