下面的查询在我的代码中用于从数据库获取时区。(DB在中央时区)
SELECT DBTIMEZONE FROM DUAL;
-05:00
当夏令时(CDT),它的预期结果。
但是当夏令时结束(CST),我的结果应该是GMT-06,但我仍然得到GMT-05。
用谷歌搜索,得到以下选项:
SELECT TO_CHAR(SYSTIMESTAMP, 'TZR') FROM dual;
SELECT TZ_OFFSET('CST6CDT') FROM DUAL;
上述查询将正确运行相应的CST和CDT ??
DBTIMEZONE
不确定SYSTIMESTAMP
(或SYSDATE
)的时区
SYSTIMESTAMP
的时区为数据库服务器操作系统的时区。
DBTIMEZONE
仅与数据类型TIMESTAMP WITH LOCAL TIME ZONE
相关,并定义了内部存储这些值的时区。如果数据库中包含一个包含TIMESTAMP WITH LOCAL TIME ZONE
列的表,并且该列包含数据,则不能更改数据库中的DBTIMEZONE
。