2012-03-12 116 views
1

我得到的錯誤:ORA-01855: AM/A.M. or PM/P.M. requiredORA-01855:AM/A.M。或PM/P.M。要求

當我嘗試執行以下查詢。

INSERT INTO TBL(ID,START_DATE) 
    values (123, TO_DATE ('3/13/2012 9:22:00 AM', 'MM/DD/YYYY HH:MI AM')) 

其中我的START_DATE列的類型是「日期」。

我已經執行以下查詢,它在上述問題沒有給出錯誤,仍然沒有成功,但:

ALTER SESSION SET NLS_DATE_FORMAT = "MM/DD/YYYY HH:MI AM"; 
+3

當問一個問題然後按編輯窗口頂部的'{}'按鈕,您的代碼將被格式化,以便閱讀。在回答你的問題時,'to_date'有幾秒鐘,但它們不包含在格式掩碼中。 – Ben 2012-03-12 09:16:06

+0

謝謝Ben,我把它格式化了。 – RMN 2012-03-12 09:18:00

+0

本,我不想要SS被保存。我只想保存到分鐘,然後上午/下午。 – RMN 2012-03-12 09:18:48

回答

5

您的格式面膜一定要轉換的字符串格式相匹配。所以,你要麼想從字符串添加SS的格式掩碼或刪除秒

INSERT INTO TBL(ID,START_DATE) 
    values (123, TO_DATE ('3/13/2012 9:22:00 AM', 'MM/DD/YYYY HH:MI:SS AM')) 

INSERT INTO TBL(ID,START_DATE) 
    values (123, TO_DATE ('3/13/2012 9:22 AM', 'MM/DD/YYYY HH:MI:SS AM')) 

如果你想接受包含秒的字符串,但你不希望到秒存儲在數據庫中(在這種情況下,Oracle將永遠保存0秒),你可以,如果你強調你的同事使用TRUNC功能

INSERT INTO TBL(ID,START_DATE) 
    values (123, TRUNC(TO_DATE ('3/13/2012 9:22:00 AM', 'MM/DD/YYYY HH:MI:SS AM'), 'MI')) 
+0

我如何從前端刪除它。我從前端獲取該字符串。有沒有一種方法可以改變/只允許字符串來。在前端,它是日期時間格式。 – RMN 2012-03-12 09:29:51

+0

@ RMN-如果你總是希望將秒數存儲爲0,我更新了我的答案,以包含截斷「DATE」到分鐘的選項。 – 2012-03-12 09:33:34