DB2 – Calcular a diferença entre duas datas

Muitas vezes precisamos calcular a diferença entre duas datas, porem uma simples subtração não resolve o nosso problema. Para tanto devemos utilizar a função TIMESTAMPDIFF do DB2, funcionando da seguinte forma:

>>-TIMESTAMPDIFF--(--expression--,--expression--)--------------><

No caso o primeiro parâmetro é um número que indica qual será o formato do resultado (dias, minutos, semanas, …), seguindo a seguinte tabela:

1 Fractions of a second
2 Seconds
4 Minutes
8 Hours
16 Days
32 Weeks
64 Months
128 Quarters
256 Years

O segundo parâmetro é onde será adicionada sua expressão, ou seja onde você fará a subtração entre datas:

DATA_HORA_FECHAMENTO - DATA_HORA_ABERTURA

Para finalizar segue um exemplo de como ficaria a consulta SLQ utilizando a função:
SELECT  TIMESTAMPDIFF(4, DATA_HORA_FECHAMENTO - DATA_HORA_ABERTURA)
    FROM YOUR_SCHEMA.YOUR_TABLE
GO

No caso o retorno será a diferença entre a data hora de fechamento e a data hora de abertura, sendo retornado em minutos, já que utilizamos o parâmetro 4.

O DB2 utiliza a seguinte regra para fazer os cálculos:

  • There are 365 days in a year.
  • There are 30 days in a month.
  • There are 24 hours in a day.
  • There are 60 minutes in an hour.
  • There are 60 seconds in a minute.

Espero ter ajudado, qualquer dúvida deixem um comentário.
Obrigado.