Calcular diferença entre datas com horas e minutos

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
frlopes
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Sex, 26 Jul 2019 7:48 am

Pessoal, bom dia.

Preciso calcular em horas e minutos a diferença entre datas com horas e minutos.
:roll:

Exemplo 1:

Data Inicial: 01/06/2006 10:30
Data Final: 02/06/2006 11:00

Preciso que o retorno seja: 23:30

Exemplo 2:

Data Inicial: 01/06/2006 10:30
Data Final: 02/06/2006 14:00

Preciso que o retorno seja: 27:30


Tentei o seguinte código abaixo (baseado no exemplo 1), porém ele dá uma diferença de 1 hora a mais. Alguém pode me ajudar? Alguma outra sugestão? :oops:


Obrigada!

Selecionar tudo

select round(((to_number(to_date('02/06/2006 11:00','DD/MM/RRRR HH24:MI') -
                         to_date('01/06/2006 10:30','DD/MM/RRRR HH24:MI')) * 1440))/60)||':'||
            round((to_number(to_date('02/06/2006 11:00','DD/MM/RRRR HH24:MI') -
                         to_date('01/06/2006 10:30','DD/MM/RRRR HH24:MI')) * 1440) -1440)
from dual
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Certo.
Eu vi que no exemplo 1, na verdade o correto seria 24h e 30 min. (Não 23:30).
Data Inicial: 01/06/2006 10:30
Data Final: 02/06/2006 11:00
Preciso que o retorno seja: 23:30
Mas tranquilo.
Eu fiz o select abaixo.
Não sei se é a melhor forma. Mas assim ta funcionando!

Selecionar tudo

select trunc(horas) horas
,      (horas-trunc(horas)) * 60 minutos
from 
  (
  select
    trunc(h2-h1) * 24 +   (h2-h1 - trunc(h2-h1)) * 24 horas
  from (
        select
          to_date('01/06/2006 10:30', 'dd/mm/yyyy hh24:mi') h1
        , to_date('02/06/2006 14:00', 'dd/mm/yyyy hh24:mi') h2
        from dual
        )
  )  
Retorna assim:

Selecionar tudo

     HORAS    MINUTOS
---------- ----------
        27         30

SQL> 
Ai você pode adaptar isso numa função, e formatar os números pra sempre ter 2 casas decimais...etc. :-o
Renato Menezes Viana
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 128
Registrado em: Sáb, 18 Nov 2006 11:51 am
Localização: Rio de Janeiro - RJ

Pessoal, dá uma olhada no link abaixo:
http://glufke.net/oracle/viewtopic.php? ... 992#p38992
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes