es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo convertir un timestamp de UTC a una zona horaria con nombre en SAP SQL Anywhere?

Estoy utilizando SAP SQL Anywhere 17 y tengo una marca de tiempo (sin zona horaria) que sé que es UTC, y sé que el navegador de mi cliente informa una zona horaria de “Europe/Berlin”.

¿Existe una manera fácil de convertir la marca de tiempo UTC a una marca de tiempo local de esta zona horaria utilizando SQL? Supongamos que ya he creado la zona horaria con el siguiente enlace (https://help.sap.com/viewer/93079d4ba8e44920ae63ffb4def91f5b/17.0/en-US/c3887dce94ba1014bf4c8fcd9b823dbd.html).

Supongo que es posible hacerlo manualmente utilizando la vista SYSTIMEZONE, ¡pero es algunas horas de trabajo duro manejar todos los casos especiales! Tal vez alguien ya lo haya hecho, o Anywhere proporciona una función del sistema que haya pasado por alto en la documentación.

Tenga en cuenta que el problema es determinar si el horario de verano está activo en una marca de tiempo UTC arbitraria. ¡Utilizar solo el desplazamiento actual dará resultados incorrectos si la marca de tiempo está, por ejemplo, dentro de 6 meses en el futuro!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera fácil de convertir la marca de tiempo UTC a una marca de tiempo local de la zona horaria especificada utilizando SQL en SAP SQL Anywhere 17. Puede utilizar la función “AT TIME ZONE” para convertir la marca de tiempo UTC a la zona horaria especificada. Aquí hay un ejemplo de consulta:

    SELECT column_fecha_hora AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/Berlin' AS columna_fecha_hora_local
    FROM nombre_tabla;
    

    Reemplace “column_fecha_hora” con el nombre de su columna de marca de tiempo y “nombre_tabla” con el nombre de su tabla. Esta consulta convertirá la marca de tiempo UTC a la marca de tiempo local de la zona horaria “Europe/Berlin”.

    Tenga en cuenta que la función “AT TIME ZONE” tiene en cuenta las reglas de horario de verano (DST) especificadas en la definición de la zona horaria. No es necesario manejar manualmente todos los casos especiales.

    Además, si necesita verificar si el horario de verano está activo en una marca de tiempo UTC específica, puede utilizar la vista “SYSTIMEZONE” para obtener el desplazamiento actual y el estado DST para una zona horaria especificada. Aquí hay un ejemplo de consulta:

    SELECT OFFSET, DST
    FROM SYSTIMEZONE('Europe/Berlin', '2019-02-01 00:00:00')
    

    Reemplace ‘Europe/Berlin’ con el nombre de la zona horaria y ‘2019-02-01 00:00:00’ con la marca de tiempo que desea verificar. Esto devolverá el desplazamiento y el estado DST para la zona horaria especificada en la marca de tiempo especificada.

Comments are closed.