Hola Juan

Pues es verdad, tienes razon el campo de tipo timestamp es com tu dices un 
alfabetico formado por fecha + hora + milisegindos, en las DDS del fichero en 
question
llamaron al campo que yo quiero tratar timestamp i eso me despistó.

Ya lo he comprobado con registros recien grabados en el fichero y el número que 
se guarda en ese campo debe ser el resultado de convertir la fecha y hora en 
milisegundos
transcurridos desde el 01/01/1970 

De hecho:

  SELECT   timestamp  (TIMESTAMP('1970-01-01-00.00.00.000000') + 
(myfield/1000) seconds)  from myfile  where myfield <> 0 order by  
 myfield desc         

Me devuelve esto:

Situar en línea  . . . . . .           
....+....1....+....2....+.             
TIMESTAMP                              
2010-06-15-16.32.20.000000             
2010-06-15-16.29.05.000000             
2010-06-15-16.19.04.000000             
2010-06-15-16.03.46.000000             
2010-06-15-16.02.40.000000             
2010-06-15-16.02.23.000000             
2010-06-15-16.01.22.000000             
2010-06-15-15.52.41.000000             
2010-06-15-15.51.42.000000             
2010-06-15-15.50.32.000000             
2010-06-15-15.49.44.000000             
2010-06-15-15.49.17.000000             
2010-06-15-15.48.55.000000             
2010-06-15-15.47.36.000000             
2010-06-15-15.45.14.000000             
2010-06-15-15.32.46.000000             
2010-06-15-15.30.49.000000             
2010-06-15-15.27.42.000000             

Muchas gracias por tu ayuda tambien.

Saludos

J.Sanchez

  ----- Original Message ----- 
  From: Juan Bernabe Estrada Morales 
  To: forum.help400 
  Sent: Tuesday, June 15, 2010 5:33 PM
  Subject: Re: En SQL convertir a fecha + hora un campo TIMESAMTP


  Que bueno que Alex te dio la solucion, y solo con afan de aclarar:



  Tengo entendido que un campo timestamp contiene la fecha, la hora y segundos, 
por lo tanto se puede extraer cada una de las partes mencionadas directamente 
del campo. 

  Ahora bien, lo que vos tenes es un campo que contiene los segundos  a partir 
de una fecha.  Por eso funciona la palabra clave seconds.  Igualmente pudiste 
tener los días a partir de cierta fecha, y entonces sumarias a la fecha base 
con la palabra days.  

  Me llama la atención la fecha 1970, pues existe una API que convierte los 
segundos a fecha timestamp, pero esta toma como base el 15 de Octubre de 1582.  
Te adjunto definición de timestamp, y de la API que menciono, para que 
verifiques si realmente es la fecha 1970.



  Saludos.



  A timestamp is a seven-part value (year, month, day, hour, minute, second, 
and microsecond) that designates a date and time as defined previously, except 
that the time includes a fractional specification of microseconds. 





  The Convert Seconds to Character Timestamp (CEEDATM) API formats a number 
representing the number of seconds since 00:00:00 14 October 1582. The output 
is a character string such as 1988/07/26 20:37:00.

  input_seconds (input) 

  A 64-bit double floating-point number representing the number of seconds 
since 00:00:00 on 14 October 1582. For example, 00:00:01 on 15 October 1582 is 
second number 86,401 (24*60*60 + 01). The valid range is 86 400 to 265 621 679 
999.999 (23:59:59.999 31 December 9999).

   

  El 15 de junio de 2010 06:28, Josep Sanchez <[email protected]> 
escribió:

    Tu si que sabes Alex, esto es lo que buscaba, como no lo habia pensado  ....

    Muchas gracias.

    J.Sánchez
      ----- Original Message ----- 
      From: alex martinez 
      To: forum.help400 
      Sent: Tuesday, June 15, 2010 9:14 AM
      Subject: Re: En SQL convertir a fecha + hora un campo TIMESAMTP


      Hola Josep:

      Es mucho más sencillo !!!

      solo hay que sumar el número de segundos a la fecha 1-1-1970

      Más o menos algo así:

      select timestamp('1970-01-01-00.00.00') + 1276578852858 seconds  from 
qsys2/qsqptabl       


      Salu2
                                             

      El 15 de junio de 2010 07:38, Josep Sanchez <[email protected]> 
escribió:

        Gracias Bernabé pero los timestamp no contienen en las primeras 
posiciones el año y luego el mes etc.

        Los valores timestamp son el número de segundos (o microsegundos) que 
han transcurrido desde una fecha base. Por ejemplo
        desde 01/01/1970 a las 00:00 y en mi fichero para ese campo tengo 
valores como estos:

        ..+....1....+....2....+
                    Timestamp  
            1.276.578.852.858  
            1.276.543.463.928  
            1.276.531.572.321  
            1.276.526.471.606  
            1.276.524.121.731  
            1.276.523.784.384  
            1.276.519.667.275  
            1.276.519.630.634  
            1.276.519.591.728  
            1.276.519.556.806  
            1.276.519.525.806  
            1.276.519.298.401  


        Por lo que no tengo ni idea de como extraer la fecha de ese valor.  
Parece que son los mili-segundos desde 1/1/1970 pero
        debe existir una funcion que lo convierta en fecha, porque de otra 
forma es muy inexacto, (dividir por 40 años a 365,25 dias por año, y luego por 
24 horas a 3600 segundos, mas los dias que llevamos de este año etc..... un 
rollo vamos)

        Muchas gracias igualmente...

        Saludos

        J. Sanchez

          ----- Original Message ----- 
          From: Bernabé Estrada 
          To: 'forum.help400' 
          Sent: Tuesday, June 15, 2010 6:29 AM
          Subject: RE: En SQL convertir a fecha + hora un campo TIMESAMTP


          Entonces lo mas sencillo es hacer armar un campo con el formato de 
fecha (yyyy-mm-dd por ejemplo) concatenando los substring de cada parte del 
campo.  Mas o menos asi:  SELECT date( substr(digits(myfld),1,4) || '-' || 
substr(digits(myfld),5,2) || '-' || substr(digits(myfld),7,2)) FROM myarchivo 
(Claro, dependiendo de en que posiciones de tu campo estén el año, mes y dia)



           Saludos.           

          From: [email protected] 
[mailto:[email protected]] On Behalf Of Josep Sanchez
          Sent: Lunes, 14 de Junio de 2010 09:33 a.m.
          To: forum.help400
          Subject: Re: En SQL convertir a fecha + hora un campo TIMESAMTP



          Hola que tal,



          year(myfield) me da argumento 1 no valido.  Lo mismo que si hago 
year(myfield*100000000) 



          El campo en el fichero es un numerico de 18,0 pero la cifra grabada 
son las 18 primeras posiciones de un

          Timestamp en tiempo de ejecución. 



          Supongo que para la base datos es un númerico y basta pero yo 
necesito saber que fecha se esconde en esa cifra.



          Gracias por tu ayuda.

            ----- Original Message ----- 

            From: Bernabe Estrada 

            To: 'forum.help400' 

            Sent: Monday, June 14, 2010 4:12 PM

            Subject: RE: En SQL convertir a fecha + hora un campo TIMESAMTP



            No me suena un timestamp de 18, pero proba extraer el month, year y 
day para ver si realmente lo reconoce como fecha.



            Select year(myfield), month(myfield), day(myfield) …..



            Saludos.





            From: [email protected] 
[mailto:[email protected]] On Behalf Of Josep Sanchez
            Sent: Lunes, 14 de Junio de 2010 04:13 a.m.
            To: forum.help400
            Subject: En SQL convertir a fecha + hora un campo TIMESAMTP



            Hola a todos,



            En un fichero tengo un campo de 18,0 empaquetado en el que se 
guarda un valor timestamp, 

            (debe ser truncado porque creo recordar que los campos Timestamp 
reales ocupaban 26 digitos)



            El caso es que intento convetirlo en una fecha normal y no funciona



            He probado:



            select date(myfield), a.* from myfile a where myfield<>0



            y tambien



            select date(myfield*100000000), a.* from myfile a where myfield<>0



            en ambos casos me devuelve asteriscos...



            Alguien sabe como ver este dato convertido en fecha ??



            Gracias de antemano.



            J.Sanchez


--------------------------------------------------------------------

            ____________________________________________________
            Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
            Forum.Help400 © Publicaciones Help400, S.L.



----------------------------------------------------------------------


          ____________________________________________________
          Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
          Forum.Help400 © Publicaciones Help400, S.L.

        ____________________________________________________
        Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
        Forum.Help400 © Publicaciones Help400, S.L.





--------------------------------------------------------------------------


      ____________________________________________________
      Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
      Forum.Help400 © Publicaciones Help400, S.L. 




    ____________________________________________________
    Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
    Forum.Help400 © Publicaciones Help400, S.L.





------------------------------------------------------------------------------


  ____________________________________________________
  Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
  Forum.Help400 © Publicaciones Help400, S.L.
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a