Calcular diferença entre Datas com hora e minuto retornando apenas horas e minutos. (HH24:mi)

Pessoal, bom dia. :slightly_smiling_face:

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

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? :pray:

Obrigada! :+1:

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

Com planilha:
se colocar estas duas datas: 01/06/2006 10:30 e 02/06/2006 11:00 e substrair o resultado é : 24:30

Com mysql:
SELECT TIMESTAMPDIFF(MINUTE,‘2006-06-01 10:30’,‘2006-06-02 11:00’)/60;
o Resultado é 24.50 que corresponde em horas a 24:30

Exato, João.

Mas se eu inverter a hora, olha só o resultado.

   select round(((to_number(to_date('02/06/2006 10:30','DD/MM/yyyy HH24:MI') - 
                     to_date('01/06/2006 11:00','DD/MM/yyyy HH24:MI')) * 1440))/60)||':'||round((to_number(to_date('02/06/2006 10:30','DD/MM/RRRR HH24:MI') - 
                     to_date('01/06/2006 11:00','DD/MM/RRRR HH24:MI')) * 1440) -1440) from dual

Resultado: 24:-30

@frlopes, seja bem vinda ao fórum.

Dê uma olhada na macro sc_time_diff do SC. Veja um exemplo e adapte às tuas necessidades:

{diferencas} = sc_time_diff(“2012-07-25 05:33:45”, “yyyy-mm-dd hh:ii:ss”, “2012-07-21 15:22:57”, “yyyy-mm-dd hh:ii:ss”);

{diferencas[0]} seria igual a 86 (horas)
{diferencas[1]} seria igual a 10 (minutos)
{diferencas[2]} seria igual a 48 (segundos).

1 Curtida