oracle错误:无效月

时间:2016-11-30 03:30:11

标签: oracle

我在我的QA环境中新设置的websphere 7.0版本上运行了一个应用程序并且低于oracle错误

SELECT MODIFIED_DATE 
FROM /*Query Builder Clause*/ abc 
WHERE  abc_CID = '1189' 
   AND NVL(to_date('2010-3-17 11.30.10.0', 'MM-dd-yyyy hh24:mi:ss'), SYSDATE)=decode(MODIFIED_DATE,null,SYSDATE,MODIFIED_DATE)

抛出异常

错误报告:

  

SQL错误:ORA-01843:不是有效月份   01843. 00000 - "不是有效月份"

此异常仅在websphere中弹出。此外,我无法修改代码,因为相同的代码在现场的websphere上运行。我也尝试做websphere user.timezone设置,我也试过默认ojdbc6.jar到更高版本。同样的代码在jboss和weblogic中工作正常。请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

Oracle不会以毫秒为单位存储日期类型,这意味着您必须修剪最后一个令牌。在这种情况下,你的表达是:

NVL(to_date('2010-3-17 11.30.00', 'yyyy-mm-dd hh24.mi.ss'),SYSDATE)

您也可以转换为时间戳:

NVL(to_timestamp('2010-3-17 11.30.00.0', 'yyyy-mm-dd hh24.mi.ss.ff1'),SYSDATE)

答案 1 :(得分:0)

问题是'2010-3-17 11.30.10.0''MM-dd-yyyy hh24:mi:ss'不匹配。我假设其工作的其他服务器位于使用格式MM-dd-yyyy的不同语言环境中。如果您无法更改代码以重新格式化日期,则需要更改jvm语言环境以匹配其工作位置(或使用MM-dd-yyyy的任何语言环境)。请参阅以下链接以更改jvm区域设置:

how do I set the default locale for my JVM?