Subtrair data atual com a data do banco de dados

04/09/2017

0

Pessoal , Boa tarde.
Alguém consegue me ajudar ?
Gostaria de uma select que pudesse subtrair o meu campo dataemissão com a data atual do meu sistema :
E o resultado fosse em horas ou em dias.
Alguém sabe me dizer se dá para fazer isso ?

Desde já obrigado.
Watson Rocha

Watson Rocha

Responder

Posts

04/09/2017

Roberto Spernega

Boa tarde Watson,

é basicamente

select sysdate - dt_emissao
from sua_tabela;

Depende como você que o resultado.

Eu tenho uma função que retorna um texto

create or replace
function Fn_Intervalo_Tempo (P_Dt_Inic in date,
P_Dt_Fina in date) return varchar2 is
v_inte number;
v_Hora varchar2(200);
--
cursor c is
SELECT lpad( extract (day from numtodsinterval(v_inte, 'day')) ,5,' ') Qt_Dias,
lpad( extract (hour from numtodsinterval(v_inte, 'day')) ,2,'0') Qt_Horas,
lpad( extract (minute from numtodsinterval(v_inte, 'day' )) ,2,'0') Qt_Minutos,
lpad( extract (second from numtodsinterval(v_inte, 'day')) ,2,'0') Qt_Segundos
FROM dual;
c_r c%rowtype;
--
begin
--
v_inte := trunc((p_dt_Fina - p_dt_Inic),6);
--
open c;
fetch c into c_r;
if c%found then
--
v_hora := c_r.Qt_Dias||' '||c_r.Qt_Horas||':'||c_r.Qt_Minutos||':'||lpad(trunc(c_r.Qt_Segundos),2,'0');
end if;
close c;
return v_hora;
exception
when others then
return 'erro';
End;
/

Ai você pode brincar com o tipo de retorno.
Horas ou minutos ou segundos, é só multiplicar.
Responder

04/09/2017

Watson Rocha

Roberto , Boa tarde.

Obrigado pelo retorno...
Eu gostaria que me retornasse resultado em dias ou em horas .
fiz este comando que vc me passou

select sysdate - dataemissao
from romaneio;

e me retornou isso ....aqui..

1124.657905092592592592592592592592592593
1123.657905092592592592592592592592592593
1117.657905092592592592592592592592592593
1116.657905092592592592592592592592592593
1169.657905092592592592592592592592592593
1169.657905092592592592592592592592592593
1167.657905092592592592592592592592592593
1145.657905092592592592592592592592592593
1152.657905092592592592592592592592592593
1145.657905092592592592592592592592592593
1141.657905092592592592592592592592592593
1140.657905092592592592592592592592592593
1132.657905092592592592592592592592592593

Abraço.
Responder

04/09/2017

Roberto Spernega

Watson,

Para o resultado em horas, desprezando os minutos e segundos, tente assim:

Select lpad( extract (day from numtodsinterval((sysdate - to_date('01/09/2017','dd/mm/yyyy')), 'day')) ,2,'0') * 24 +
lpad( extract (hour from numtodsinterval((sysdate - to_date('01/09/2017','dd/mm/yyyy')), 'day')) ,2,'0') Qt_Dias_Horas
from dual;


Substitua o to_date('01/09/2017','dd/mm/yyyy') pelo campo dt_emissao da sua tabela no select.
Responder

05/09/2017

Watson Rocha

Roberto deu certo , obrigado.
RESOLVIDO
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar