我在 2 台机器上导入了相同的数据库转储。当我执行 sql 时,我看到 2 个不同的值。
select struct_doc_id, START_DATE, END_DATE from structured_doc where struct_doc_id = 1329 order by START_DATE;
机器 1:
1329 31-03-11 09:00:00.000000000 PM 01-01-16 08:59:59.999000000 PM
1329 01-04-11 12:00:00.000000000 AM 31-12-15 11:59:59.999000000 PM
机器 2:
1329 01-04-11 12:00:00.000000000 AM 31-12-15 11:59:59.999000000 PM
1329 01-04-11 12:00:00.000000000 AM 31-12-15 11:59:59.999000000 PM
另外,我执行了 sql:
select dbtimezone, sessiontimezone, systimestamp, current_timestamp
from dual;
两台机器上的结果是:
机器 1:
-07:00 Asia/Calcutta 09-02-16 02:15:55.422190000 AM -08:00 09-02-16 03:45:55.422204000 PM ASIA/CALCUTTA
机器 2:
-07:00 Asia/Calcutta 09-02-16 05:23:20.703408000 AM -05:00 09-02-16 03:53:20.703418000 PM ASIA/CALCUTTA
注意:我在 2 台不同的机器上运行了 2 个数据库。
谁能告诉我运行第一个sql时值差异的可能原因是什么?
正如我所看到的,这可能是其中一个原因: 检查列的数据类型structured_doc是:"时间戳"或"具有本地时区的时间戳","具有时区的时间戳"。
Oracle 将根据客户端的会话属性自动调整提供的日期。我猜您正在一个数据库中远程执行导入,并在另一个数据库中本地执行导入。
此致敬意