Mi aplicación de base de datos se implementará en varios sitios en diferentes zonas horarias.Determinar el desfase de zona horaria en T-SQL
Necesito una función T-SQL que determinará la marca de tiempo UTC de la medianoche del 1 de enero del año actual para los cálculos de YTD. Todos los datos se almacenan en marcas de tiempo UTC.
Por ejemplo, Chicago es UTC-6 con horario de verano (DST), la función debe devolver '2008-01-01 06:00:00' si se ejecuta en cualquier momento en 2008 en Chicago. Si se ejecuta en Nueva York (GMT-5 + DST) el próximo año, debe devolver '2009-01-01 05:00:00'.
Puedo obtener el año actual del AÑO (GETDATE()). Pensé que podría hacer un DATEDIFF entre GETDATE() y GETUTCDATE() para determinar el desplazamiento, pero el resultado depende de si la consulta se ejecuta durante el horario de verano o no. No conozco ninguna función T-SQL incorporada para determinar el desplazamiento o si la hora actual es DST o no.
¿Alguien tiene una solución a este problema en T-SQL? Podría codificarlo o guardarlo en una mesa pero preferiría no hacerlo. Supongo que esta es una situación perfecta para usar CLR Integration en SQL Server 2005. Me pregunto si hay una solución T-SQL que desconozco.
Gracias Eric. Implementé una solución basada en tablas como la que sugirió en el pasado. Me preguntaba si había algo que había echado de menos que me haría la vida más fácil. –