Vixi! Quanto código!!! Vale dar uma olhada em um post que eu coloquei uma vez http://mportes.blogspot.com/2006/01/escrevendo-cdigo-demais.html
Sobre seu problema: Retornava e retorna 1o. de setembro, porque estamos em setembro! quando voce faz um to_date desta forma, é como dar um trunc na data com o inicio do mes, veja: ops$marcio:LX10G> exec :n := 11405 PL/SQL procedure successfully completed. N ------------- 11405 ops$marcio:LX10G> select rpad('0',6,:n) from dual; RPAD(' ------ 011405 1 row selected. ops$marcio:LX10G> select to_date(rpad('0',6,:n),'hh24miss') from dual; TO_DATE(RPAD('0',6, ------------------- 01/09/2007 01:14:05 1 row selected. Quando eu mudo a data do meu server, também muda a query. ops$marcio:LX10G> !sudo date '01312007' Wed Jan 31 20:07:00 BRST 2007 ops$marcio:LX10G> select to_date(rpad('0',6,:n),'hh24miss') from dual; TO_DATE(RPAD('0',6, ------------------- 01/01/2007 01:14:05 1 row selected. ops$marcio:LX10G> select sysdate from dual; SYSDATE ------------------- 31/01/2007 20:08:25 1 row selected. Mas qual é o problema com a Data?? Penso que nenhum, pois o que voce está interessado é na parte numérica da hora/min/seg certo? Então voce pode fazer seu cálculo tranquilamente: Agora se voce quiser trabalhar TAMBÉM com data de hoje, use a "aritmética de datas" e somar a hora na data de hoje ou em qualquer outra data. Veja: 1) Primeiro, ache a diferença em dias, das horas que voce tem contra o inicio do mes, depois some este valor a 00 horas da data que voce quer ver as horas. ops$marcio:LX10G> select to_date(rpad('0',6,:n),'hh24miss') - trunc(sysdate,'mm') from dual; TO_DATE(RPAD('0',6,:N),'HH24MISS')-TRUNC(SYSDATE,'MM') ------------------------------------------------------ ,051446759259 1 row selected. ops$marcio:LX10G> select trunc(sysdate) + (to_date(rpad('0',6,:n),'hh24miss') - trunc(sysdate,'mm')) from dual; TRUNC(SYSDATE)+(TO_ ------------------- 27/09/2007 01:14:05 1 row selected. Agora basta voce verificar se isso se aplica a seu código. PS. Roberto Amorim: Respondendo a sua dúvida, Márcio - sou eu! Talvez o Bruno tenha se enganado quando respondeu o seu e-mail. On 9/26/07, rei_do_delphi <[EMAIL PROTECTED]> wrote: > > É Márcio, o problema é que assim, pode haver para 1 da manha o > seguinte formato : 11405 e o certo deveria ser 011405 para 1 hora, 14 > minutos e cinco segundos. Na verdade não sei o porque eles não usam > campo datatime. O que teria que fazer então é > to_date((to_char(142514,'000000'),'hh24miss'), o problema é que quando > eu fazia isso, não sei por qual razão ele retornava 1/09/2007. Não me > pergunte o porque. Só sei que consegui resolver dessa maneira: > > select hhmmss_out_acqr,hhmmss_inp_acqr, > > abs((to_number(substr(to_char(hhmmss_out_acqr,'000000'),1,2)*3600)- > to_number(substr(to_char(hhmmss_inp_acqr,'000000'),1,2)*3600))+ > (to_number(substr(to_char(hhmmss_out_acqr,'000000'),4,2)*60)- > to_number(substr(to_char(hhmmss_inp_acqr,'000000'),4,2)*60))+ > (to_number(substr(to_char(hhmmss_out_acqr,'000000'),6,2))- > to_number(substr(to_char(hhmmss_inp_acqr,'000000'),6,2))) > ) as tempo, > --hhmmss_inp_acqr as tempo , > data_tx from tabela1 > > foi o único jeiro que consegui fazer, > \ > > --- Em oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>, > "Marcio Portes" > <[EMAIL PROTECTED]> escreveu > > > > Qual o problema com o to_date(...) não entendi. > > Eu faria exatamente isso: to_date(campo, 'hh24miss') - to_date()... > > > > > > On 9/25/07, rei_do_delphi <[EMAIL PROTECTED]> wrote: > > > > > > 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. > > > > > > > > > > > > > > > > > -- > > Marcio Portes > > Material Tecnico em Portugues - http://mportes.blogspot.com > > Practical Learning Oracle - > > http://mportes.blogspot.com/2006/02/practical-learning-oracle.html > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]