【问题标题】:Oracle TIMESTAMP w/ timezone data type confusion带有时区数据类型混淆的 Oracle TIMESTAMP
【发布时间】:2011-02-21 02:47:26
【问题描述】:

您什么时候会使用带时区的 TIMESTAMP,而不是带本地时区的 TIMESTAMP?

当数据存储在数据类型为 TIMESTAMP w/local tz 的列中时,数据被归一化为数据库时区,时区位移不作为列数据的一部分存储。当用户检索数据时,Oracle 以用户的本地会话时区返回数据。

这不是更有用吗?我想不出为什么我想使用带有时区的 TIMESTAMP 并用 UTC 偏移量取回一些 gobble gook 的原因。

【问题讨论】:

    标签: oracle datetime date timezone


    【解决方案1】:

    数据库的标准化可能并不总是准确的,原因是: 1. 在使用本地时区规范化 TIMESTAMP 时,数据库取决于客户端提供的时区(即会话时区)。由于未设置系统时区等多种原因,会话时区可能不准确。 2. 如果客户端提供了时区名称(而不是时区偏移量),数据库需要检索相应的时区偏移量。它使用系统表自动完成。现在想想夏令时。如果夏令时转换日期频繁更改,则数据库系统表中的数据可能不准确。您需要跟踪此类更改并立即获取/应用数据库补丁(这可能并不总是可行),因此数据库可以更新其系统表以反映时区偏移。

    【讨论】:

      【解决方案2】:

      有时,了解事件在其本地时区范围内发生的时间可能很重要 - 而不是查询它的人的等效时间。

      假设示例:一个医疗应用程序记录一个人的睡眠模式。您可能会更感兴趣的是他们什么时候睡觉,在他们的时区,而不是他们什么时候睡觉,因为您自己的本地时区;另外,您还可以确定他们当时的时区,这样您就可以判断他们当时是否在时区之间旅行,并且可能患有时差。

      【讨论】:

        猜你喜欢
        • 2012-02-11
        • 2011-02-01
        • 1970-01-01
        • 2013-12-04
        • 1970-01-01
        • 1970-01-01
        • 2017-08-14
        • 2017-12-24
        • 2010-12-12
        相关资源
        最近更新 更多