如何知道运行DB2的服务器是否配置了DST?
CURRENT TIMEZONE
特殊注册表给出了UTC与时间戳之间的差异,但这种差异可能会发生变化(夏季/冬季)。最后,我不确定服务器的配置时区。
让我们假设巴黎的格林尼治标准时间是+1。在夏季,CURRENT TIMEZONE为20000,因为DST处于活动状态,即2小时。在冬季,CURRENT TIMEZONE显示10000,完全对应于+1 GMT。
我想检索当前时区的名称,我可以通过匹配时区的名称和值(存储在表格或函数内部)与CURRENT TIMEZONE寄存器和 DST来实现
但我怎样才能获得DST?
答案 0 :(得分:1)
你说:
我想检索当前时区的名称,我可以通过匹配时区的名称和值(存储在表中或函数内)与CURRENT TIMEZONE寄存器和DST来实现。
这是不正确的。任何具有映射到时区名称或标识符的时区偏移的列表都必然会出现错误,即使它具有支持或不支持DST的标志。
问题是许多不同的时区使用相同的偏移量并使用DST,但是在不同的日期和/或不同的时间输入和退出DST。时区也会对其遵循的偏移(例如Samoa did in 2011)或DST开始和停止(例如the USA did in 2007)的规则进行更改。在某些情况下,DST可以永久设置为开启或关闭(例如俄罗斯did in 2011,并且正在撤消this year)。
如果您只是想知道数据库服务器运行的时区是否在DST中 - 您可以检查1月1日和7月1日的UTC偏移量。如果它们相同,则时区不使用DST。如果它们不同,则检查当前时间的偏移量并查看它与哪个对齐。如果它是较大的偏移量,则DST有效。如果它是较小的偏移量,则DST不起作用。
免责声明:我假设DB2有一个函数来获取特定日期的偏移量。我还没有验证过这一点,对DB2本身知之甚少。