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