Oracle: Recuperando diferença (em horas) entre duas datas.

Este post mostra como conseguir a diferença em horas entre dois valores datetime. O resultado será um número do gênero 2,5 (ou duas horas e meia).

A consulta abaixo retornará a diferença:

O resultado desta consulta, no dia em que estou fazendo este post, será 7044.200555555555555555555555555555555544. Isso significa que já passaram 7044 horas (e uns quebrados) desde 31/01/2017 as 20:00.

O resultado está correto, mas está feio. Dificilmente o usuário vai querer (ou entender) um número desta forma. Então podemos formatar o resultado, utilizando a função ROUND(m, n), onde m é o valor para arredondar e n é o número de casas decimais:

Com a utilização da função ROUND, arredondamos o resultado para 1 casa decimal, fazendo com que o número final seja 7044.2. Algo bem mais apresentável que o número anterior.

Se você colocar uma data futura no lugar de ‘2017-01-31 20:00’,  o resultado será um número negativo.

 

Extra: Dica para quem usa PowerBuilder! Você não precisa utilizar a função TO_DATE(d, f). O próprio PB vai formatar a data da forma correta. Se você insistir em utilizar esta função, vai influenciar o resultado.

The following two tabs change content below.
Breno RdV
Ex-Psicólogo, com quase uma década de experiência em Recursos Humanos e Gestão de Pessoas, atual desenvolvedor e Analista de Sistemas, trabalhando com PowerBuilder, C#, PowerShell e expandindo horizontes para Python, Xamarin, PHP, Angular e (por que não?) Unity.

Comments

comments

Posted in Banco de Dados, Dev and tagged , , .