2016-11-30 71 views
0

我運行在WebSphere 7.0版本,這是新近在我的QA ENV安裝應用程序時遇到以下Oracle錯誤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 Error: ORA-01843: not a valid month 01843. 00000 - "not a valid month"

只有使用websphere纔會彈出此異常。此外,我不能修改代碼,因爲相同的代碼在現場運行在websphere上。我試圖做websphere user.timezone設置,我也嘗試了默認的ojdbc6.jar到更高版本。同樣的代碼在jboss和weblogic中也能正常工作。請幫我解決這個問題。

+2

NVL(TO_DATE('03 -17-2010 11時30' 分10秒, 'MM-DD-YYYY HH24:MI:SS'),SYSDATE ) –

+0

這是服務器生成的日期格式和時間戳 –

+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) 
+0

我無法更改代碼,因爲相同的代碼在websphere生產環境和其他環境中表現良好服務器。我們在下面列出NVL(to_date('** 11-30-17 11.30.10.0 **','MM-dd-yyyy hh24:mi:ss')格式,這是websphere設置問題。 –

+0

應該更好'NVL(to_timestamp('2010-3-17 11.30.00.0','yyyy-mm-dd hh24.mi.ss.ff1'),SYSTIMESTAMP)' –

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?

相關問題