【问题标题】:How to change default nls_date_format for oracle jdbc client如何更改 oracle jdbc 客户端的默认 nls_date_format
【发布时间】:2010-10-01 15:33:29
【问题描述】:

我在 Oracle 10.2 XE 上定义了全局 nls_date_format 如下:

alter system set nls_date_format='YYYY-MM-DD HH24:MI:SS' scope=spfile;

在 Windows 上连接时,客户端会使用会话特定格式覆盖它,因此我需要在每个会话开始时运行此行:

alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';

但是,我有一些无法更改的自定义代码(jdbc 代码,使用 ojdbc14.jar),因此在接收连接时无法执行此行。有没有办法更改所有 jdbc 连接的 nls_date_format 的默认值?也许在连接字符串中添加一些东西,或者一些我可以使用的环境变量?

顺便说一句,sqlplus 和 sqldeveloper 也用自己的格式覆盖了服务器的格式,但是我发现如何更改它们的默认值,所以问题只是 jdbc 连接。

【问题讨论】:

    标签: oracle jdbc


    【解决方案1】:

    在登录后触发器中设置 nls 日期格式

    【讨论】:

      【解决方案2】:

      谢谢,这对我有用。 我插入的触发器是这样的:

      CREATE OR REPLACE TRIGGER LOGINTRG
      AFTER LOGON ON DATABASE
      BEGIN
      EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT=''YYYY-MM-DD HH24:MI:SS''';
      END LOGINTRG;
      

      【讨论】:

      • 参见stackoverflow.com/questions/283589/… 为特定架构创建触发器。
      • 我试过了,它奏效了,但是它把一切都减慢到无法使用的地步(在空表上选择 count(*) 需要几秒钟!!!)
      • @laurent 在我听来就像您的问题隐藏在其他地方一样。多年来,我们一直在与许多客户一起在生产环境中使用此登录触发器,并且没有出现任何问题。
      猜你喜欢
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 1970-01-01
      • 2011-04-09
      • 2015-01-23
      • 1970-01-01
      • 2016-08-07
      相关资源
      最近更新 更多