Datetime 来自DB2的夏令时

Datetime 来自DB2的夏令时,datetime,timezone,db2,dst,datetimeoffset,Datetime,Timezone,Db2,Dst,Datetimeoffset,我如何知道运行DB2的服务器是否配置了DST 当前时区特殊寄存器为我提供UTC和时间戳之间的差异,但这种差异可以改变(夏季/冬季)。最后,我不确定服务器配置在哪个时区 假设巴黎在+1 GMT。在夏天,当前时区是20000,因为DST是活动的,这意味着2小时。在冬季,当前时区指示10000,与+1 GMT完全对应 我想检索当前时区的名称,我可以通过将时区的名称和值(存储在表中或函数中)与当前时区寄存器和DST进行匹配来实现 但是我怎样才能拿到DST呢 你说过: 我想检索当前时区的名称,我可以

我如何知道运行DB2的服务器是否配置了DST

当前时区
特殊寄存器为我提供UTC和时间戳之间的差异,但这种差异可以改变(夏季/冬季)。最后,我不确定服务器配置在哪个时区

假设巴黎在+1 GMT。在夏天,当前时区是20000,因为DST是活动的,这意味着2小时。在冬季,当前时区指示10000,与+1 GMT完全对应

我想检索当前时区的名称,我可以通过将时区的名称和值(存储在表中或函数中)与当前时区寄存器和DST进行匹配来实现

但是我怎样才能拿到DST呢

    • 你说过:

      我想检索当前时区的名称,我可以通过将时区的名称和值(存储在表中或函数中)与当前时区寄存器和DST进行匹配来实现

      这是不正确的。任何具有映射到时区名称或标识符的时区偏移量的列表都将充满错误,即使它具有是否支持DST的标志

      问题是许多不同的时区使用相同的偏移量和DST,但在不同的日期和/或不同的时间输入和退出DST。时区也会对其规则进行更改,以确定它们遵循的偏移量(例如),或DST开始和停止的时间(例如)。在某些情况下,DST可以永久开启或关闭(如俄罗斯和正在撤销)

      如果您只是想知道数据库服务器运行的时区是否在DST中,您可以检查1月1日和7月1日的UTC偏移量。如果它们相同,则时区不使用DST。如果它们不同,则检查当前时间的偏移量,并查看它与哪个时间对齐。如果是较大的偏移量,则DST有效。如果是较小的偏移量,则DST无效


      免责声明:我假设DB2有一个函数来获取特定日期的偏移量。我还没有验证过这一点,对DB2本身也知之甚少。

      DB2实例从操作系统获取时间和语言环境信息,包括DST状态,因此您基本上需要知道实例进程的
      TZ
      环境变量的值。但是如何从DB2中获取呢?我在考虑一个外部例程。如果服务器的DBA没有提供函数,我怀疑您必须创建一个。您是否有可以讨论的特定用例?客户机和服务器之间的关系似乎是相关的。一个外部例程可能是最好的选择。这里有一篇老文章描述了一个相关的问题,也许你可以从中有所收获:
      http://www.ibm.com/developerworks/data/library/techarticle/dm-0407munteanu/
      …这是一个常见建议的原因之一,即让数据库(可能还有整个服务器)使用UTC/GMT-无DST,无偏移,没有奇怪的天数,娜达。“本地时间”通常是记录事件的显示/表示问题(当使用时间戳时),而不是域问题。此外,它还使您免于一个巨大的头痛问题——在发生DST时进行更改后的任何转换都非常糟糕,您必须在发生规则更改时进行存储,并对存储的值执行数学运算。最好对传入参数执行它,并使用索引。