【问题标题】:Oracle change dbtimezoneOracle 更改 dbtimezone
【发布时间】:2013-09-18 09:57:36
【问题描述】:

我的数据库配置了dbtimezone=+2:00:

当我的应用程序发送具有时区的日期时,Oracle 是否会自动将日期转换为其dbtimezone 并将其存储在列中?

当我的应用程序要求输入字段日期时,Oracle 是否会自动将其转换为应用程序时区?

为了与业务规则保持一致,我想将这个 dbtimezone 更改为 UTC。所以我发出了alter database set time_zone='UTC' 命令,我重新启动了oracle 服务器,现在select dbtimezone from dual; 命令返回“UTC”。

但是,数据库中的所有字段日期都没有改变(从 GMT+2 到 UTC 没有变化 -2 小时)。当我询问 sysdate 时,它​​返回 GMT+2 日期......我尝试将我的 SQL Developer 配置时区更改为 UTC,但它没有改变任何东西。我是否有 Oracle 会话参数的问题,在显示之前将我的数据库数据转换为 GMT+2?

最后,有没有人有一个好的做法来进行这种改变? (将数据库时区和现有日期更改为新时区)。

【问题讨论】:

    标签: oracle oracle11g timezone


    【解决方案1】:

    如果您所做的只是更改数据库时区设置,那么只有当您的数据以 TIMESTAMP WITH LOCAL TIME ZONE 类型存储时,您才会注意到输出的任何变化。

    我不建议这样做。如果您的数据只是存储在常规的TIMESTAMP 字段中并且已经设置为 UTC,那就更好了。

    您应该阅读有关所有不同 date and time datatypes 的文档,以便了解每种类型的工作原理以及彼此之间的区别。

    【讨论】:

    • 经过更多挖掘后,我发现更改数据库会话 time_zone 不要翻译简单的时间戳字段。正如你所说的,马特,如果我想要,我必须使用 TimeStampTZ 列类型。
    猜你喜欢
    • 1970-01-01
    • 2019-03-03
    • 2020-05-20
    • 2013-09-16
    • 2012-10-28
    • 2012-11-17
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    相关资源
    最近更新 更多