Oracle时区表现不一致

问题描述 投票:0回答:1

我有两个DBS - Db1和Db2.DB1 - "select dbtimezone from dual" 返回+00:00。这意味着UTC。

DB2-"select dbtime zone from dual" 返回 -04:00。

对于这两个DB,"SELECT SESSIONTIMEZONE FROM DUAL "返回 "AsiaCalcutta"。

当我在DB1中的表中插入一条记录时,在UTC时间下,created_time列显示时间为UTC - 20-MAY-20 02.47.27.418000000 PM UTC。注意这里的UTC这个词。所以,它一定是取自dbtimezone。

当我在DB2的表中插入一条UTC时间的记录时,created_time列显示时区为AsiaCalcutta。似乎是取自会话时区。DB时区是-04:00。它对应的是大西洋时间而不是亚洲时间。

两张表的表描述中,created_date列的时间标记为TIME STAMP WITH TIMEZONE。这里没有提到本地时区。

为什么Oracle在DB1的情况下取dbtimezone,而在DB2中取session时区?为什么会出现这种不一致的情况?我的目的是在DB2中用UTC填充created_time。

oracle timezone utc
1个回答
-1
投票

也许这可以回答这个问题。http:/www.dba-oracle.comt_change_timezone.htm

数据库时区通常在创建数据库时设置,但你可以手动更改时区,并重新启动数据库,比如这样。

SQL> alter database set time_zone = '-05:00';
SQL> shutdown immediate
SQL> startup
© www.soinside.com 2019 - 2024. All rights reserved.