除了获取会话时区偏移量和数据库时区偏移量之外,oracle数据库中还有SESSIONTIMEZONE
和DBTIMEZONE
的其他任何使用/角色。
我想知道的是,在向数据库插入/从数据库中检索日期方面,更改SESSIONTIMEZONE
和DBTIMEZONE
值的含义是什么。
答案 0 :(得分:0)
在这些功能中使用会话和数据库时区
- dbtimezone中的systimestamp
时间戳
- sessiontimezone中的current_timestamp
时间戳。
可能还有很多其他地方。我确定更改会影响dbms_scheduler
在从没有时区的datetime到timestamp with time zone
declare
with_dbtimezone TIMESTAMP WITH TIME ZONE := systimestamp; --dbtimezone
with_sesione_timezone TIMESTAMP WITH TIME ZONE := current_timestamp; --sesione_timezone
no_time_zone TIMESTAMP := with_dbtimezone; -- remmove timezone from ;
implicitit_converiosn TIMESTAMP WITH TIME ZONE := no_time_zone;
begin
dbms_output.put_line(to_char(with_dbtimezone,'YYYY-MM-DD hh24:mi:ss TZR'));
dbms_output.put_line(to_char(with_sesione_timezone,'YYYY-MM-DD hh24:mi:ss TZR'));
dbms_output.put_line(to_char(no_time_zone,'YYYY-MM-DD hh24:mi:ss TZR'));
dbms_output.put_line(to_char(implicitit_converiosn,'YYYY-MM-DD hh24:mi:ss TZR'));
end;
答案 1 :(得分:0)
sysdate and dbtimezone different in Oracle Database解释了dbtimezone,系统时区和sessiontimezone之间的区别。
以下是在需要时将sessiontimezone同步到系统时区的方法:
begin execute immediate 'alter session set time_zone = ''' || to_char(systimestamp, 'TZR') || ''''; end;