在oracle中使用SESSIONTIMEZONE和DBTIMEZONE有什么用

时间:2017-07-27 14:12:40

标签: oracle11g timezone

除了获取会话时区偏移量和数据库时区偏移量之外,oracle数据库中还有SESSIONTIMEZONEDBTIMEZONE的其他任何使用/角色。

我想知道的是,在向数据库插入/从数据库中检索日期方面,更改SESSIONTIMEZONEDBTIMEZONE值的含义是什么。

2 个答案:

答案 0 :(得分:0)

在这些功能中使用会话和数据库时区   - dbtimezone中的systimestamp时间戳   - sessiontimezone中的current_timestamp时间戳。

可能还有很多其他地方。我确定更改会影响dbms_scheduler 在从没有时区的datetime到timestamp with time zone

的隐式转换期间,Oracle也在使用会话时区
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;