当前位置: 首页 > 面试题库 >

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

从经略
2023-03-14
问题内容

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

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

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

我想实现一种方法,其中SQL Server可以识别时差的这种变化,然后使用诸如sp_update_schedule之类的方法重新计划其自身的作业。

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

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


问题答案:

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

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



 类似资料:
  • 2018-03-26 09:04:14Z 2018-03-26 14:34:14+05:30 2018-03-26 11:04:14+02:00

  • 从“GMT夏令时”或任何其他可用的Windows时区信息有什么方法可以到达BST吗?

  • 我得到一个格式为yyyy-MM-dd HH: mm的字符串,它代表UTC中的日期和时间。下一步是将其放入日历(带时间区UTC)。 此外,还需要创建一个单独的日历,将UTC转换为“欧洲/伦敦”时区(GMT/BST)。 之后,我需要能够检测“欧洲/伦敦”日历是否有DST(日光节约补偿)。 下面的代码将告诉你我已经走了多远,它在一台默认系统时区为GMT的英国计算机上运行正常。但是,当我在一台时区为UTC

  • 如果英国是格林尼治标准时间(一年的一半),这工作良好时,投入一个活动。然而,在英国夏令时,该事件在创建时会延迟一个小时。如何输入时区或创建正确处理GMT或BST的日期。还有没有更好的方法来完成我到目前为止所做的事情呢? 多谢。

  • 我知道这对terracotta的人来说是不公平的,但是有人尝试过使用Hazelcast在集群环境中使用计划作业吗? 我能想象到的最简单的实现是以下架构: 全局黑泽尔铸造锁,用于确保只有一台服务器启动了 Quartz 配置。 以分布式任务的形式运行实际任务。(这可以在以后完成,目前繁重的计划任务将需要处理触发分布式任务) 一旦持有锁的服务器关闭,另一台服务器就会获得锁。 我相信对于已经拥有Hazel

  • 我有一个日历对象的问题,它没有显示美国/圣地亚哥时区的DST(每日节约时间)的正确偏移:我的示例代码:time zone from time zone = time zone . gettimezone("美国/圣地亚哥"); 输出为:偏移量:-4在2015年3月31日的美国/圣地亚哥时区,偏移量应为-3。(参考:http://www.timeanddate.com/worldclock/conv