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:
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 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.ordersTecnologia
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 dateFROM sales.ordersTecnologia
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
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.
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()syntaxParâmetro
O que é isso?
datepartUm parâmetro obrigatório. Essa é a unidade na qual
DATEDIFF()informa a diferença entrestartdateeenddate. Consulte a seção a seguir para saber os diferentes tipos de valores que ele pode conter.startdateUm required que significa um valor de data e hora que indica a data de início.
enddateUm required que significa um valor de data e hora que indica a data final.
datepartsyntaxO parâmetro
datepartpode assumir vários valores, incluindo os seguintesyear,y,yy, ouyyyyquarter,qq,qmonth,mm,mdayofyear,day,dd,dweek,wk,wwhour,hhminute,mi,nsecond,ss,smillisecond,msmicrosecond,mcsnanosecond,nsObserve que o endereço
datepartnão deve ser colocado entre aspas. Por exemplo, a sintaxe a seguir está correta:A afirmação a seguir está incorreta.
DATEDIFF()exemplosAo trabalhar com
DATEDIFF(), os resultados podem ser valores positivos ou negativos. Seenddatefor posterior astartdate, entãoDATEDIFF()retornará um valor positivo. Seenddatefor anterior astartdate,DATEDIFF()retornará um valor negativo.Exemplo 1: Encontre a diferença entre duas datas
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
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().order_idorder_dateshipped_dateorder_to_ship_days1
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.orderscomo no Exemplo 3, podemos usarDATEDIFF()para encontrar o intervalo entre a data de hoje e a data em que um pedido é feito.order_idorder_dateshipped_dateorder_to_ship_days1
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çãoDATEDIFF_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