我在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连接。
答案 0 :(得分:5)
在登录后触发器中设置nls日期格式
答案 1 :(得分:5)
谢谢,这对我有用。 我插入的触发器是:
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;