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 obtener la diferencia horaria para una fecha local histórica del horario de verano?

Hay un servidor SQL que utiliza GETDATE() en UTC+1, por lo que es propenso a diferentes horas locales. En verano, produce +02:00 (CEST), mientras que en invierno es +01:00 (CET).

Obtener el desplazamiento de zona horaria de la hora actual es fácil. ¿Cómo obtener el desplazamiento de UTC para fechas históricas?

La fecha en sí misma lo dice todo: si está entre la 1 en punto UTC de los últimos domingos de marzo y octubre, respectivamente, es horario de verano, de lo contrario no lo es. Pero esa es una heurística complicada de aplicar a cada consulta.

No parece que pueda utilizar SYSDATETIMEOFFSET()/TODATETIMEOFFSET/SWITCHOFFSET/DATENAME(TZOFFSET,...) porque ya necesitaría saber el desplazamiento. En este caso particular, tampoco puedo utilizar AT TIME ZONE/sys.time_zone_info porque se trata de un servidor SQL antiguo de 2014.

Debe haber una solución estándar para esto. Aparte de utilizar fechas UTC o almacenar el desplazamiento para cada fecha, ¿no hay una forma razonable de obtener el desplazamiento por horario de verano desde cualquier fecha en una zona horaria específica (geográfica)?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una posible solución es crear una tabla o tabla de búsqueda que contenga las fechas de inicio y fin del horario de verano (DST) para la zona horaria, y los correspondientes desplazamientos de UTC para cada uno. Luego, al consultar una fecha histórica, puedes utilizar la fecha para buscar el desplazamiento de DST correspondiente en la tabla. Esto requeriría actualizar la tabla cada año para reflejar cualquier cambio en las reglas de DST en la zona horaria.

    Otro enfoque es utilizar una biblioteca o API de terceros que proporcione información sobre la zona horaria y las reglas de DST. Algunos ejemplos incluyen las bibliotecas ICU, Moment.js o la API de Zona Horaria de Google Maps. Estos pueden integrarse en tu código de SQL Server para proporcionar desplazamientos precisos de zona horaria y DST para cualquier fecha.

    En última instancia, la mejor solución dependerá de las necesidades y limitaciones específicas de la aplicación, así como de los recursos disponibles para implementar y mantener la funcionalidad de zona horaria y DST.

Comments are closed.