Pular para o conteúdo principal
InicioTutoriaisSQL

FUNÇÃO SQL DATEDIFF()

DATEDIFF() é uma das funções de manipulação de dados de data mais usadas no SQL. Domine-o lendo este tutorial.
abr. de 2024  · 3 min leer

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?

datepart

Um parâmetro obrigatório. Essa é a unidade na qual DATEDIFF() informa a diferença entre startdate e enddate. Consulte a seção a seguir para saber os diferentes tipos de valores que ele pode conter. 

startdate

Um required que significa um valor de data e hora que indica a data de início. 

enddate

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, ou yyyy
  • 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

SELECT DATEDIFF(year, ‘2022-12-31', ‘2024-06-01')

1

SELECT DATEDIFF(quarter, ‘2022-12-31', ‘2024-06-01')

2

SELECT DATEDIFF(month, ‘2022-12-31', ‘2024-06-01')

6

SELECT DATEDIFF(day, ‘2022-12-31', ‘2024-06-01')

153

SELECT DATEDIFF(week, ‘2022-12-31', ‘2024-06-01')

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

SELECT DATEDIFF(hour,'2023-12-31 00:00:00', '2023-12-31 00:59:59')

0

SELECT DATEDIFF(minute,'2023-12-31 00:00:00','2023-12-31 00:59:59')

59

SELECT DATEDIFF(second,'2023-12-31 00:00:00','2023-12-31 00:59:59')

3599

SELECT DATEDIFF(millisecond,'2023-12-31 00:00:00','2023-12-31 00:59:59')

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

order_id

order_date

shipped_date

order_to_ship_days

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

order_id

order_date

shipped_date

order_to_ship_days

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

Veja também

Saiba mais sobre o SQL

Temas

Cursos populares de SQL

Certificação disponível

Course

Introdução ao SQL

2 hr
625K
Aprenda a criar e consultar bancos de dados relacionais usando SQL em apenas duas horas.
See DetailsRight Arrow
Start Course
Veja MaisRight Arrow
Relacionado

blog

As 9 melhores ferramentas de análise de dados para analistas de dados em 2023

Está pensando em começar uma nova carreira como analista de dados? Aqui está tudo o que você precisa saber sobre as ferramentas de análise de dados que liderarão o setor de ciência de dados em 2023.
Javier Canales Luna's photo

Javier Canales Luna

16 min

SQL Jobs Header

blog

O SQL é uma linguagem de programação?

O SQL é considerado uma linguagem de programação? Analisamos os vários fatores a serem considerados e para que o idioma é usado.
Sejal Jaiswal's photo

Sejal Jaiswal

11 min

blog

Certificação PostgreSQL: Tudo o que você precisa saber

Navegue pela certificação PostgreSQL com a DataCamp. Obtenha habilidades especializadas, conhecimento prático e um caminho para o domínio dos dados.
Matt Crabtree's photo

Matt Crabtree

10 min

blog

O que é o Microsoft Fabric?

Descubra como o Microsoft Fabric revoluciona a análise de dados e saiba como seus principais recursos capacitam as empresas a tomar decisões orientadas por dados.
Kurtis Pykes 's photo

Kurtis Pykes

10 min

tutorial

SELEÇÃO de várias colunas no SQL

Saiba como selecionar facilmente várias colunas de uma tabela de banco de dados em SQL ou selecionar todas as colunas de uma tabela em uma consulta simples.
DataCamp Team's photo

DataCamp Team

3 min

tutorial

Como escrever um script Bash: um tutorial simples de scripts Bash

Descubra os fundamentos da criação de scripts Bash e aprenda a escrever um script Bash.
Kurtis Pykes 's photo

Kurtis Pykes

5 min

See MoreSee More