我的数据库配置了dbtimezone=+2:00
:
当我的应用程序发送带有时区的日期时,Oracle会自动将日期转换为dbtimezone
并将其存储在列中吗?
当我的应用程序请求字段日期时,Oracle会自动将其转换为应用程序时区吗?
为了与业务规则保持一致,我想将此dbtimezone
更改为UTC。所以我做了alter database set time_zone='UTC'
命令,我重新启动了oracle服务器,现在select dbtimezone from dual;
命令返回“UTC”。
但是,DB中的所有字段日期都没有改变(从GMT + 2到UTC没有变化-2小时)。当我询问sysdate时,它返回GMT + 2日期......我尝试将我的SQL Developer配置时区更改为UTC,但它没有改变任何内容。在显示数据库数据之前,是否存在将数据库数据转换为GMT + 2的Oracle会话参数问题?
最后,有没有人有一个很好的做法来做这个改变? (将数据库时区和现有日期更改为新时区)。
答案 0 :(得分:0)
如果你所做的只是改变数据库时区设置,那么如果你的数据以TIMESTAMP WITH LOCAL TIME ZONE
类型存储,你只会注意到输出的任何变化。
我不建议这样做。如果您的数据只存储在常规TIMESTAMP
字段中并且已经设置为UTC,那会好得多。
您应该阅读有关所有不同date and time datatypes的文档,这样您就可以了解每种类型的工作原理和不同之处。