同一条sql,sqlplus,plsql中执行没有问题,后台报异常ORA-01855: AM/A.M. or PM/P.M. required

Linux 应用服务器,Linux数据库服务器,数据库是oracle

后台在执行一段查询sql时报错

Caused by: java.sql.SQLDataException: ORA-01855: AM/A.M. or PM/P.M. required

执行的sql,去掉多余的部分类似

select to_timestamp('1970-1-1 12:00:00.000 上午','yyyy-mm-dd hh:mi:ss.ff AM')from dual;

在sqlplus和plsql中执行都没有问题
应用服务器和数据库服务器都设置了环境变量

export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"

请问该怎么解决,在尽量不修改代码的情况下

这个玩意是基于oracle客户端产生的会话的,你java应用访问产生的会话,那么就要把java应用端的环境变量改了

可以创建登录触发器来修改,比如

CREATE OR REPLACE TRIGGER sys.schema_nls_session_settings AFTER LOGON ON SCOTT.SCHEMA
BEGIN
execute immediate 'alter session set NLS_TIMESTAMP_TZ_FORMAT =''DD/MM/YYYY HH24:MI:SS TZR TZD''';
END;
/

NLS_DATE_LANGUAGE,只有中文才支持上午