2012-05-01 19 views
5

SQL Server Empleo/Horarios - US vs. Ajuste del Reino Unido Horario de VeranoSQL Server Empleo/Horarios - US vs. ajuste Reino Unido Horario de Verano

Tenemos un servidor basado en Reino Unido, que tiene que ejecutar un agente de SQL de empleo a los 16 años: 30 (hora central de EE. UU .: esto puede parecer extraño, pero debido a la disponibilidad de algunos datos). Por lo general, esto no sería un problema porque la diferencia horaria entre el Reino Unido y los EE. UU. Es de 6 horas, por lo que programamos nuestro trabajo para las 22:30.

Pero como el Reino Unido y los Estados Unidos ajustan sus relojes en diferentes momentos en marzo y noviembre para el horario de verano, hay un período de 2 semanas cuando la diferencia de tiempo entre el Reino Unido y los EE. UU. Es de 5 horas.

Me gustaría implementar una forma en la que SQL Server pueda identificar este cambio en la diferencia horaria y luego volver a programar el trabajo usando algo así como sp_update_schedule.

Un enfoque que tengo es obtener la marca de tiempo actual en un servidor basado en los EE. UU. Y luego compararlo con la hora actual del Reino Unido. Si la diferencia horaria es de 5 horas, reprogramar el trabajo a las 21:30, si la diferencia horaria es de 6 horas, reprogramar el trabajo a las 22:30.

Pero de todos modos podemos sugerir otra solución, tal vez una que no implique obtener la marca de tiempo actual en el servidor de EE. UU. Y, idealmente, no tener que almacenar una lista de fechas de ajuste de ahorro de luz natural en una tabla. Algo más dinámico tal vez?

+1

de SQL 'GETUTCDATE' podría ser útil – Paddy

Respuesta

3

En realidad, parece que ha mencionado las dos soluciones viables: pregunte a un servidor en esa zona horaria o almacene una lista de fechas críticas. La línea del partido de por qué en el primer enlace a continuación. Puede implementar su propia función (que debería almacenar una lista de fechas o pedirle a un servidor la compensación). O puede obtener una lista de dominio público de la zona horaria (como en el segundo enlace a continuación). También hay varios servicios web que devolverán compensaciones. Oracle implementa esa base de datos de zonas horarias para convertir zonas horarias con nombre, por lo que si ya admite ambas, puede hacerlo.

Hay una implementación de C# que puede ajustar en las funciones de CLR en el tercer enlace.

http://blogs.msdn.com/b/sqlprogrammability/archive/2008/03/18/using-time-zone-data-in-sql-server-2008.aspx

http://www.twinsun.com/tz/tz-link.htm

http://timezone.codeplex.com/

Cuestiones relacionadas