如何从SQLPLUS获取时区区域?

时间:2014-04-16 21:53:42

标签: oracle oracle11g sqlplus

我正在使用Oracle Developer和Oracle 11g(Oracle Database 11g企业版11.2.0.3.0版 - 生产版)

select SESSIONTIMEZONE from DUAL;

SQLPLUS / system_config_tbl_load.sql中的结果:-4:00
 结果在SQL Developer:America / New_York

在SQL Developer和SQLPLUS中给出了不同的结果 我想在SQLPLUS中看到该区域。

此外,我必须为多个地点执行此操作,并且无法使用" ALTER SESSION SET time_zone =' America / New_York'"

2 个答案:

答案 0 :(得分:0)

我认为SQL Developer在您打开新连接时会产生一个隐含{。}}。

我看到了几个解决方案:

  • 在客户端主机上定义环境变量ALTER SESSION SET time_zone=...
  • 创建数据库触发器并相应地设置时区
  • 更改数据库的时区 - 除非任何用户设置其个人时区,否则无效

数据库触发器:

TZ

END;

答案 1 :(得分:0)

您可以在应用程序中或在此触发器中编写一个函数,如下所示:

IF SESSIONTIMEZONE = '-4:00' THEN
   execute immediate 'ALTER SESSION SET time_zone = ''America/New_York''';
ELSIF SESSIONTIMEZONE = '-5:00' THEN
   execute immediate ...
END IF;