【问题标题】:SQL Server Jobs / Schedules - US vs. UK Daylight Savings AdjustmentSQL Server 作业/时间表 - 美国与英国夏令时调整
【发布时间】:2012-05-10 23:57:03
【问题描述】:

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

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

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

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

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

但无论如何都可以提出另一种解决方案,也许不涉及在美国服务器上获取当前时间戳,理想情况下不必在表格中存储夏令时调整日期列表。也许更动态的东西?

【问题讨论】:

  • SQL 的GETUTCDATE 可能有用

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


【解决方案1】:

实际上,您似乎提到了两种可行的解决方案:询问该时区的服务器或存储关键日期列表。关于为什么在下面的第一个链接中的派对路线。您可以实现自己的功能(必须存储日期列表或向服务器询问偏移量)。或者您可以获得时区信息的公共域列表(如下面的第二个链接)。还有几个 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/

【讨论】:

    猜你喜欢
    • 2010-11-14
    • 2018-07-06
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 2014-05-12
    • 2015-04-14
    相关资源
    最近更新 更多