SQL Server作业/计划 - 美国与英国夏令时调整

时间:2012-05-01 13:04:14

标签: sql sql-server timezone sql-server-agent

SQL Server作业/时间表 - 美国与英国夏令时调整

我们有一台基于英国的服务器需要在16:30运行SQL代理作业(美国中部时间 - 这可能看起来很奇怪,但由于某些数据的可用性)。通常这不会有问题,因为英国和美国之间的时差是6小时,所以我们安排工作时间为22:30。

但由于英国和美国在3月和11月的不同时间调整时钟以节省夏令时,因此英国和美国之间的时差为5小时,为期2周。

我想实现一种方法,SQL Server可以识别这种时差变化,然后使用像sp_update_schedule这样的东西重新安排它自己的工作。

我的一种方法是在美国的服务器上获取当前时间戳,然后将其与当前的英国时间进行比较。如果时差为5小时,则将工作重新安排到21:30,如果时差为6小时,则将工作重新安排到22:30。

但无论如何可以建议另一种解决方案,也许不会涉及在美国服务器上获取当前时间戳,理想情况下不必在表格中存储夏令时调整日期列表。有什么更有活力的吗?

1 个答案:

答案 0 :(得分:3)

实际上,您似乎已经提到了两个可行的解决方案:在该时区询问服务器或存储关键日期列表。派对线为什么在下面的第一个链接。您可以实现自己的功能(必须存储日期列表或向服务器询问偏移量)。或者您可以获得时区信息的公共域列表(如下面的第二个链接)。还有一些Web服务将返回偏移量。 Oracle实现了时区数据库以在命名时区之间进行转换,因此如果您已经支持两者,则可以执行此操作。

有一个C#实现可以在第三个链接中包装CLR函数。

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/