【问题标题】:Change Oracle ADW default timezone更改 Oracle ADW 默认时区
【发布时间】:2021-11-08 23:16:13
【问题描述】:

ADW 配置为 UTC 时区,需要将其更改为 EST 时区。

ETL 自定义应用程序有许多存储的自定义过程,它们 SYSDATE 返回为操作系统设置的当前日期和时间。

在 ADW 中解决此问题的最佳方法是什么?

【问题讨论】:

  • 使用CURRENT_DATE 而不是SYSDATECURRENT_DATE 使用当前会话时区而不是操作系统的时区(您无法更改)

标签: oracle oracle-autonomous-db


【解决方案1】:

要更改时区,请参考here

请注意,这不会更改 SYSDATE 的输出,因为它依赖于无法更改的操作系统时区。建议改用 CURRENT_DATE。

升级示例

此示例说明了将 DST 行为更新到 Oracle 数据库 11g, 默认时区版本为 14 的版本 2。首先,假设 您当前的数据库正在使用时区版本 3,并且 假设您有一个现有的表 t,其中包含时间戳 时区数据。

scott用户身份连接数据库,执行以下命令 声明:

DROP TABLE t;
CREATE TABLE t (c NUMBER, mark VARCHAR(25), ts TIMESTAMP WITH TIME ZONE);
 
INSERT INTO t VALUES(1, 'not_affected', 
                    to_timestamp_tz('22-sep-2006 13:00:00 america/los_angeles',
                                    'dd-mon-yyyy hh24:mi:ss tzr tzd'));
INSERT INTO t VALUES(4, 'affected_err_exist',
                     to_timestamp_tz('11-mar-2007 00:30:00 america/st_johns',
                                     'dd-mon-yyyy hh24:mi:ss tzr tzd'));
INSERT INTO t VALUES(6, 'affected_no_err',
                     to_timestamp_tz('11-mar-2007 01:30:00 america/st_johns',
                                     'dd-mon-yyyy hh24:mi:ss tzr tzd'));
INSERT INTO t VALUES(14, 'affected_err_dup', 
                     to_timestamp_tz('21-sep-2006 23:30:00 egypt',
                                     'dd-mon-yyyy hh24:mi:ss tzr tzd'));
COMMIT;

然后,您可以选择启动一个准备窗口来检查受影响的 存在重叠的数据和潜在的语义错误或 不存在的时间。为此,您应该启动一个窗口 准备迁移到时区版本 14。假设您 拥有必要的特权。这些权限由 DBMS_DST 包。

【讨论】:

  • 这是一个仅链接的答案。目前尚不清楚该链接如何回答问题,如果可以,最好引用文档中的相应部分并提供额外的解释性评论以使其清楚。 (您的意思是链接到第 4.9 节,而不是 4.7.2?...即使您这样做了,您仍应引用适当的详细信息,以免答案隐藏在链接后面。)
猜你喜欢
  • 2012-11-25
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 2019-05-19
  • 2018-02-09
  • 2020-08-31
  • 1970-01-01
  • 2016-08-22
相关资源
最近更新 更多