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.
24 de 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

Course

Introduction to SQL

2 hr
796.8K
Learn how to create and query relational databases using SQL in just two hours.
See DetailsRight Arrow
Start Course
Ver maisRight Arrow
Relacionado

tutorial

FUNÇÃO SQL FORMAT()

FORMAT() é uma das funções mais comumente usadas no SQL. Aprenda suas principais aplicações neste tutorial.
Travis Tang 's photo

Travis Tang

3 min

tutorial

FUNÇÃO SQL COUNT()

COUNT() permite que você conte o número de linhas que correspondem a determinadas condições. Saiba como usá-lo neste tutorial.
Travis Tang 's photo

Travis Tang

3 min

tutorial

Função SQL COALESCE

COALESCE() é uma das funções mais úteis do SQL. Leia este tutorial para saber como dominá-lo.
Travis Tang 's photo

Travis Tang

4 min

tutorial

Entendendo a função SQL DECODE()

Saiba como usar DECODE() no Oracle para lógica condicional na transformação de dados. Compare DECODE() com a instrução CASE WHEN em termos de desempenho e comportamento.
Allan Ouko's photo

Allan Ouko

11 min

tutorial

Tutorial do Power BI Calculate

Aprenda a usar a função CALCULATE do Power BI e dê exemplos de como você pode usá-la.
Joleen Bothma's photo

Joleen Bothma

6 min

tutorial

Tutorial do Insert Into SQL

A instrução "INSERT INTO" do SQL pode ser usada para adicionar linhas de dados a uma tabela no banco de dados.
DataCamp Team's photo

DataCamp Team

3 min

See MoreSee More