使用以下查询:select sysdate from dual;
结果是:27-09-2018 07:50:50
-这UK
次
与:Select dbtimezone from dual;
输出:+10:00
我希望sysdate
与dbtimezone
处于相同时区
我试图用alter database set time_zone='AEST'
来做到这一点,但是如果这是正确的解决方案,我会感到困惑。
最感谢您的帮助。 谢谢。
答案 0 :(得分:1)
常见的误解是DBTIMEZONE
是SYSDATE
和SYSTIMESTAMP
的时区
SYSDATE
和SYSTIMESTAMP
在数据库服务器所在的操作系统的时区中返回。
DBTIMEZONE
是TIMESTAMP WITH LOCAL TIME
值的(内部)时区。我不知道有什么实际用途。请注意,如果数据库包含带有DBTIMEZONE
列的表且该列包含数据,则无法在数据库上更改TIMESTAMP WITH LOCAL TIME ZONE
。
我要运行DBTIMEZONE的当前时间
select SYSTIMESTAMP AT TIME ZONE DBTIMEZONE
from dual;
CURRENT_TIMESTAMP AT TIME ZONE DBTIMEZONE
也在工作。
答案 1 :(得分:0)
SYSDATE
返回为数据库服务器所在的操作系统设置的当前日期和时间。
CURRENT_DATE
返回会话时区中的当前日期。
show parameter nls_date_format
NAME TYPE VALUE
------------------------------ ----------- ------------------------
nls_date_format string dd-Mon-yyyy hh24:mi:ss
select sysdate, current_date, dbtimezone from dual;
SYSDATE CURRENT_DATE DBTIME
-------------------- -------------------- ------
27-Sep-2018 08:16:00 27-Sep-2018 08:16:00 +00:00
alter session set time_zone = '+08:00';
Session altered.
select sysdate, current_date, dbtimezone from dual;
SYSDATE CURRENT_DATE DBTIME
-------------------- -------------------- ------
27-Sep-2018 08:13:06 27-Sep-2018 15:13:06 +00:00