1 Reply Latest reply on Aug 19, 2016 10:00 PM by JuanM

    error de conversión de timezone

    ffb2d0ea-a070-4ca1-8642-b379c170543a

      Buenas tardes

      Necesito hacer conversiones de timezone entre por ejemplo bogota-colombia y Santiago- Chile y viceversa.

      Al ejecutar el siguiente SQL tanto en la Oracle 10 como en la 11

      SELECT TIMESTAMP '2016-05-20 01:00:00 AMERICA/BOGOTA' AT TIME ZONE  'AMERICA/SANTIAGO'   FROM DUAL;

      Se obtiene  20/05/16 03:00:00.000000000 AM AMERICA/SANTIAGO

      Si aplicamos la inversa para del resultado anterior :

      SELECT TIMESTAMP '2016-05-20 03:00:00 AMERICA/SANTIAGO' AT TIME ZONE  'AMERICA/BOGOTA'   FROM DUAL; -- ok

      Se obtiene 20/05/16 02:00:00.000000000  AM AMERICA/BOGOTA   una hora diferente a la solicitada inicialmente

       

      Entiendo que se afecta por que en Chile hay Horario de Invierno y verano,  lo que no entiendo es porque no es reversible y cual de las 2 horas es la correcta ?.

       

      Gracias por su ayuda

        • 1. Re: error de conversión de timezone
          JuanM

          ffb2d0ea-a070-4ca1-8642-b379c170543a wrote:

           

          Buenas tardes

          Necesito hacer conversiones de timezone entre por ejemplo bogota-colombia y Santiago- Chile y viceversa.

          Al ejecutar el siguiente SQL tanto en la Oracle 10 como en la 11

          SELECT TIMESTAMP '2016-05-20 01:00:00 AMERICA/BOGOTA' AT TIME ZONE 'AMERICA/SANTIAGO' FROM DUAL;

          Se obtiene 20/05/16 03:00:00.000000000 AM AMERICA/SANTIAGO

          Si aplicamos la inversa para del resultado anterior :

          SELECT TIMESTAMP '2016-05-20 03:00:00 AMERICA/SANTIAGO' AT TIME ZONE 'AMERICA/BOGOTA' FROM DUAL; -- ok

          Se obtiene 20/05/16 02:00:00.000000000 AM AMERICA/BOGOTA una hora diferente a la solicitada inicialmente

           

          Entiendo que se afecta por que en Chile hay Horario de Invierno y verano, lo que no entiendo es porque no es reversible y cual de las 2 horas es la correcta ?.

           

          Gracias por su ayuda

          Hola,

           

          Tomando en cuenta la hora actual, usando la web, se ve que la transformación de la hora en el sentido Bogota -> Santiago es correcta.

          Sin título.png

           

          Por lo que es correcto que:

          >>>>>>>>>SELECT TIMESTAMP '2016-05-20 01:00:00 AMERICA/BOGOTA' AT TIME ZONE 'AMERICA/SANTIAGO' FROM DUAL;

          Retorne:

          >>>>>>>>>2016-05-20 03:00:00.000000000 AM AMERICA/SANTIAGO

          Es decir, 2 horas más de diferencia.

           

          Pero en el sentido, Santiago -> Bogota, sólo retorna 1 hora menos de diferencia. Que es incorrecto.

           

          Realicé una prueba entre America/Bogota -> America/Los_Angeles y viceversa y no hubo problema.

          Ejecutando una prueba entre America/Mexico_City -> America/Santiago, y encontré el mismo problema que con Santiago -> Bogota.

           

          Desconozco si pueda ser un Bug.

                Siguiendo la documentación disponible en la web no debería haber problemas, sin embargo, los hay.

           

          De ser posible, abre un Ticket con Oracle (Service Request) para que te ayuden con esto.