Carlos Só complementando... se o datatype for TIMESTAMP (ao invés de DATE), a diferença dos valores resulta em tipo INTERVAL (já num formato próximo ao que estamos acostumados para horas e minutos).
[ ] André Em 31 de julho de 2014 13:57, 'Carlos Pinto' carlos.pin...@yahoo.com.br [oracle_br] <oracle_br@yahoogrupos.com.br> escreveu: > > > Obrigado Chiappa, vou testar. > > > > > > Carlos > > > > *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] > *Enviada:* 31 de julho de 2014 17:56 > *Para:* oracle_br@yahoogrupos.com.br > *Assunto:* [oracle_br] Re: Calculo Horas - Oracle 10g > > > > > > É ** trivial **, sabendo-se que a aritmética entre dates no Oracle te dá > um valor numérico que representa qtdade de dias E que um dia tem 24 horas, > 1 hora tem 60 mins e um min tem 60 segs : > > SYS:AS SYSDBA:SQL>set serveroutput on > SYS:AS SYSDBA:SQL>DECLARE > v_data_ini DATE := to_date('01/01/2014 10:00:00', 'dd/mm/yyyy > hh24:mi:ss'); > v_data_fim DATE := to_date('03/01/2014 11:30:20', 'dd/mm/yyyy > hh24:mi:ss'); > BEGIN > dbms_output.put_line( > 'Dias:' || trunc( v_data_ini - v_data_fim ) || > ',Horas:' || trunc( mod( (v_data_ini - v_data_fim)*24, 24 ) ) || > ',Mins :' || trunc( mod( (v_data_ini - v_data_fim)*24*60, 60 ) ) || > ',Segs :' || trunc( mod( (v_data_ini-v_data_fim)*24*60*60, 60 ) ) > ); > END; > / > > Dias:-2,Horas:-1,Mins :-30,Segs :-19 > > PL/SQL procedure successfully completed. > > EVIDENTEMENTE : > > -> quando vc tira um valor maior de um valor menor vc obtém um Negativo : > se for o caso, Inverter a ordem na subtração... > > -> se só te interessa horas, minutos e segundos, simplesmente Adicione > nas duas datas um dia/mês/ano arbitrário qualquer, sempre o mesmo, E não > use a lógica de DIAS > > []s > > Chiappa > > >