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:
select 24 * (sysdate - to_date('2017-01-31 20:00', 'YYYY-MM-DD hh24:mi')) as diff_hours from dual;
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:
select ROUND(24 * (sysdate - to_date('2017-01-31 20:00', 'YYYY-MM-DD hh24:mi')), 1) as diff_hours from dual;
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.
Latest posts by Breno RdV (see all)
- O que é Metaclass e como ela funciona. (#python #dev #metaclass) - janeiro 11, 2023
- Entenda a mágica dos Generators. (#python, #dev, #generator, #iterator) - dezembro 28, 2022
- Ordenando um DataFrame por múltiplas colunas. (#python #pandas #jupyter #dev #data) - agosto 3, 2022