2012-06-07 130 views
0

我正在嘗試使用時間戳格式[DD-MON-RR HH.MI.SSXFF AM]來插入我的日期。Oracle日期文字[DD-MON-RR HH.MI.SSXFF AM]

我無法修改數據庫設置,我必須通過JAVA的字符串格式插入日期(我無法修改定義它的類)。如上所述,我需要逐字重新構造一個字符串的格式,而不要磨鍊其他類/ db。

日期的nls設置是DD-MON-RR。 2012年6月12日和12月12日/ 2012年6月12日工作非常好。

但我覺得很難重新創建日期的時間戳部分。

下面列出的是我試過的幾種格式。

'12-JAN-12' < success 
'12/JAN/2012' < success 
'12/JAN/2012 10.30.25.000 AM < failed 
'12/JAN/2012 10:30:25.000 AM < failed 

搞砸了:還是?或者是零(秒)不夠毫秒?現在幾個小時一直在這個麻煩中。

在此先感謝。

EDIT 

經過幾次推理會後,老年人允許他們改變模型類。現在一切都很好。感謝您的幫助和建議。

+1

是什麼數據庫中字段的類型?它是'DATE'還是'TIMESTAMP'? –

+0

它被設置在'DATE'上,但是可用的數據似乎在'DD-MM-YYYY HH:Mi:ss AM'(例如:'1/4/2010 4:52:46 PM') –

+1

oracle也包含時間,但只有秒(毫秒)。你嘗試的格式需要時間戳數據類型 –

回答

1

既然你必須發送一個字符串到數據庫,你必須依靠Oracle數據庫的DATE類型的隱式轉換。
由於您無法更改數據庫設置,我可以建議的唯一事情就是更改會話設置。
所以,如果你可以對數據庫運行命令,嘗試:

Statement st = conn.createStatement(); 
st.execute("alter session set NLS_DATE_FORMAT='dd/mm/yyyy hh24:mi:ss'");  

(或其他格式(它不推薦使用mon在您的格式,因爲它可能涉及NLS_TERRITORY太))