Olá pessoal, boa tarde!
Estou enfrentando o seguinte problema:
Tenho uma tabela de tarefas e tenho que criar uma função que pegue a data_final e inicial desta tarefa e me retorne o tempo de duração. Já tentei diversas formas, até achei um tópico aqui no fórum mas não me ajudou totalmente. Eu precisava que essa procedure me retornasse no formato de 'DD 24HH:mm:ss', não consegui fazer o tratamento correto para conseguir este resultado. Se eu pegar a data_final - data_inicial vai me retornar um numero, e este numero não estou conseguindo converter para o numero de horas e/ou dias correspondentes.
alguém pode me ajudar???
Obrigado.
Calcular duração de um período entre duas datas
Certo, mas eu gostaria, se puder, de um exemplo que faça esse tratamento, pois já tentei, mas até agora minhas contas não deram muito certo...theand escreveu:Ele te volta o número de dias.
O q você precisa fazer é tratar a casa decimal pra calcular as horas e o decimal deste cálculo tratar pra trazer os minutos e depois os segundos.

-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Dá uma olhada e vê se te ajuda:
http://glufke.net/oracle/viewtopic.php?f=3&t=8286
http://glufke.net/oracle/viewtopic.php?f=3&t=8286
Obrigado, só ficou uma dúvida ainda, aí postei ela nesse link que você me indicou..Noctifero escreveu:Dá uma olhada e vê se te ajuda:
http://glufke.net/oracle/viewtopic.php?f=3&t=8286
Abraço o/
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Cmo postado em:
http://glufke.net/oracle/viewtopic.php? ... 971#p32971
http://glufke.net/oracle/viewtopic.php? ... 971#p32971
DECLARE
--Parametros da data
date_1 DATE := TO_DATE('16/01/2012 10:30:14', 'dd/mm/rrrr hh24:mi:ss');
date_2 DATE := SYSDATE;
---
ndate_1 NUMBER;
ndate_2 NUMBER;
nsecond_1 NUMBER(5, 0);
nsecond_2 NUMBER(5, 0);
---
res NUMBER;
dias NUMBER;
horas NUMBER;
minutos NUMBER;
seg NUMBER;
BEGIN
ndate_1 := to_number(to_char(date_1, 'J'));
ndate_2 := to_number(to_char(date_2, 'J'));
nsecond_1 := to_number(to_char(date_1, 'SSSSS'));
nsecond_2 := to_number(to_char(date_2, 'SSSSS'));
--total da diferença em segundos.
res := ((ndate_2 - ndate_1) * 86400) + (nsecond_2 - nsecond_1);
dias := trunc(res / 86400, 0);
horas := trunc(MOD(res, 86400) / 3600, 0); /* + (dias * 24)*/
minutos := trunc(MOD(res, 3600) / 60);
seg := MOD(res, 60);
dbms_output.put_line('EM DIAS : ' || dias || ' dias ' || horas || ':' || minutos || ':' || seg);
---
horas := horas + (dias * 24);
dbms_output.put_line('EM HORAS: ' || horas || ':' || minutos || ':' || seg);
END;
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante