Subtrair data atual com a data do banco de dados
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.
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
Curtidas 0
Respostas
Roberto Spernega
04/09/2017
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.
é 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.
GOSTEI 0
Watson Rocha
04/09/2017
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.
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.
GOSTEI 0
Roberto Spernega
04/09/2017
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.
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.
GOSTEI 0
Watson Rocha
04/09/2017
Roberto deu certo , obrigado.
RESOLVIDO
RESOLVIDO
GOSTEI 0