【问题标题】:Time zone used for Oracle Date field用于 Oracle 日期字段的时区
【发布时间】:2019-03-09 04:15:07
【问题描述】:

TL;DR - 我认为当服务器的时区在过去某个时间点发生更改时,无法确定用于给定日期字段记录的时区是否正确?

工厂控制系统设计为使用 UTC 服务器(而非 Oracle)时间,因此所有日期列都是 UTC。在过去的某个时候,他们将服务器时间更改为本地时间。多年后的现在,他们希望应用程序显示正确的日期。在不知道更改发生日期的情况下,有没有办法SELECT,所以所有日期记录都是正确的?我认为我可以使“现代”记录正确或更改前记录正确,但不能同时正确,除非我知道何时发生。由于这是 Windows 操作系统的更改,我认为即使是警报日志也不会帮助假设他们在某些时候没有对其进行修整,但无论如何从他们那里获取任何信息或服务器访问权限并不容易。原来是 10g,现在是 12c。

【问题讨论】:

  • 你的假设是正确的。继续。下一个问题:有没有办法从你拥有的数据中推断出转换可能发生的时间?大致如下(可能与您的业务完全无关)。系统记录人们上班和下班的时间。查看数据,您会发现直到 2010 年 3 月 15 日,大多数人在凌晨 3 点(可能是 UTC,对吗?)到达,但在那之后,大多数人似乎在早上 8 点到达。那么您可能会猜到转换发生在 2010 年 3 月 16 日。
  • 是的,如果我想找出足够糟糕的情况,我可以尝试找出何时出现异常间隙。我怀疑它会发生在关机期间(即假期)。

标签: oracle date timezone


【解决方案1】:

正确。 Oracle 的 DATE 数据类型与时区无关。如果要在数据库中存储时区信息,请使用 TIMESTAMP WITH TIMEZONE 数据类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 2012-11-07
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    相关资源
    最近更新 更多