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]

Responder a