问题 如何更改oracle jdbc客户端的默认nls_date_format


我在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连接。


12200
2018-01-15 17:08


起源



答案:


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


5
2018-01-15 17:30





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

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;

5
2018-01-15 18:47



看到 stackoverflow.com/questions/283589/... 为特定架构创建触发器。 - Vadzim
我尝试了这个,它有效,但它减慢了一切,直到它不合适(在空桌上选择计数(*)需要几秒钟!!!) - laurent
@laurent听起来像你的问题隐藏在其他地方。多年来,我们一直在使用这个登录触发器与许多客户进行生产,没有问题。 - Yoni


答案:


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


5
2018-01-15 17:30





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

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;

5
2018-01-15 18:47



看到 stackoverflow.com/questions/283589/... 为特定架构创建触发器。 - Vadzim
我尝试了这个,它有效,但它减慢了一切,直到它不合适(在空桌上选择计数(*)需要几秒钟!!!) - laurent
@laurent听起来像你的问题隐藏在其他地方。多年来,我们一直在使用这个登录触发器与许多客户进行生产,没有问题。 - Yoni