Taí rei, de graça, 20 min pensando. Na próxima paga a cerveja do happy hour Não botei no padrão de nomeclatura aqui da empresa pois estava sem saco e com pressa para fazer logo, mas vc ajeita.
create or replace function fnsig_calc_hora_number(x in number, y in number) return number is result number; horax number; minx number; segx number; horay number; miny number; segy number; horan number; minn number; segn number; total_seg_x number; total_seg_y number; total_seg number; tot_horan number; tot_min number; begin horax := round(x / 10000); minx := round((x - (horax * 10000)) / 100); segx := x - (horax * 10000) - (minx * 100); horay := round(y / 10000); miny := round((y - (horay * 10000)) / 100); segy := y - (horay * 10000) - (miny * 100); total_seg_x := (horax * 3600) + (minx * 60) + segx; total_seg_y := (horay * 3600) + (miny * 60) + segy; --aqui você faz uma validação para caso x seja menor que y e o resultado fique negativo, o que seria errado total_seg := total_seg_x - total_seg_y; if total_seg < 3600 then horan := 0; tot_horan := 0; else tot_horan := trunc(total_seg / 3600); horan := tot_horan * 10000; tot_horan := tot_horan * 60 * 60; end if; if total_seg < 60 then minn := 0; tot_min := 0; else tot_min := trunc(((total_seg - tot_horan) / 60), 0); minn := tot_min * 100; tot_min := tot_min * 60; end if; segn := total_seg - tot_horan - tot_min; result := horan + minn + segn; return(result); end fnsig_calc_hora_number; rei_do_delphi escreveu: > Boa tarde a todos, tenho uma tabela que tem um campo que armazena a > data de alguma coisa, em formato number. Ex: 193104 para 19 horas, 31 > minutos e 04 segundos. Precisamos subtrair esse campo de outro campo > que também contém hora nesse mesmo forma e também em number. Gostaria > de saber se há alguma maneira de fazer isso sem uso de pl/sql, isto é, > apenas por funções do oracle, ja sei que não funciona: > > select to_date(campo,'hh24miss') from tabela > > pois ele reclama que a hora tem que estar entre 0 e 23. > > Alguém pode me dar alguma ajuda? > Obrigado a todos e abraço. > > > > >> Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure >> » Scripts » Tutoriais acesse: >> http://www.oraclebr.com.br/codigo/ListaCodigo.php >> > -------------------------------------------------------------------------------------------------------------------------- > >> Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira >> responsabilidade de seus remetentes. >> > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > -------------------------------------------------------------------------------------------------------------------------- > >> O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >> http://www.oraclebr.com.br/ >> > ------------------------------------------------------------------------------------------------------------------------ > > Links do Yahoo! Grupos > > > > > >