梦里折花 2021-12-16 17:23 采纳率: 75%
浏览 39
已结题

同一条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"

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

  • 写回答

2条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2021-12-16 22:52
    关注

    这个玩意是基于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;
    /
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月29日
  • 已采纳回答 12月21日
  • 创建了问题 12月16日

悬赏问题

  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化