Retorno em horas e minutos - Oracle

25/07/2019

0

Pessoa, boa tarde.

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

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, porém ele dá uma diferença de 1 hora a mais. Alguém pode me ajudar?

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
Fabíola Lopes

Fabíola Lopes

Responder

Posts

14/04/2020

Argelia Martins

Pessoa, boa tarde.

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

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, porém ele dá uma diferença de 1 hora a mais. Alguém pode me ajudar?

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
Responder

14/04/2020

Argelia Martins

Pessoa, boa tarde.

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

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, porém ele dá uma diferença de 1 hora a mais. Alguém pode me ajudar?

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



Conseguiu resolver Fabiola?
Responder

17/04/2020

Jair N.

Bom Dia, juro não entendi o porquê tu transforma até então String Data converte para numérico, e ainda manda arrendodar?
Olha só
1º) se tu tem um campo que seja TIMESTAMP data hora, se truncar este campo tu perde as horas e fica apenas a data;
2º) existe uma função que faz a conversão de cada unidade de tempo. veja exemplo
SELECT (EXTRACT(DAY FROM (dt_fin - dt_ini)) * 24 * 60 * 60)
+ (EXTRACT(HOUR FROM (dt_fin - dt_ini)) * 60 * 60)
+ (EXTRACT(MINUTE FROM (dt_fin - dt_ini)) * 60) AS diferenca
FROM (SELECT TO_TIMESTAMP(''01/06/2006 10:30':00') AS dt_ini
, TO_TIMESTAMP('02/06/2006 11:00:00') AS dt_fin
FROM dual ) converte;
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar