考虑下表:
CREATE TABLE MY_DATA (
MY_DATA_ID NUMBER(38,0) PRIMARY KEY,
THE_DATA VARCHAR(10) NOT NULL,
DATA_TIMESTAMP TIMESTAMP (6) WITH LOCAL TIME ZONE DEFAULT SYSTIMESTAMP NOT NULL
);
(请注意,在TIMESTAMP
没有进一步限定的情况下默认为上面使用的数据类型。)
如果我使用 Data Pump 导出此数据,然后将其导入另一个具有不同时区的数据库,会发生什么情况?存储的时间是否会针对新时区进行调整,还是会表现得好像偏移量已更改而不更改其余数据?
例如,如果
- 原始数据库是美国中部时间
- 一行包含
2017-10-25 12:14:38
- 我们使用美国东部时间将数据导入数据库
时间会调整为2017-10-25 12:14:38 -04:00
(如在不更改日期/时间的情况下替换偏移量)还是2017-10-25 13:14:38 -04:00
(= 2017-10-25 12:14:38 -05:00
)?
我很抱歉没有亲自测试这个。我无权访问具有不同时区的另一个数据库,但我想知道告知我选择的数据类型。
我按照您的示例进行了测试并导出了表 MY_DATA。
然后我使用 HEX 编辑器查看了 dmp 文件。该文件包含
如您所见,它包含信息
<DBTIMEZONE>+01:00</DBTIMEZONE>
,因此我们可以假设当您将此类文件导入到运行在不同数据库上的另一个数据库时,DBTIMEZONE
这些值将被正确转换。