我在oracle 12c上有table_name,它的column_name1的數據類型爲「TIMESTAMP(6)WITH TIME ZONE」。我正在使用SQL Developer。雖然使用了AM,但是「AM/A.M。或PM/P.M。required」錯誤
當我使用SQL Developer從這個column_name1中選擇任何東西時,我會看到類似於:19-SEP-17 03.19.55.000000000 PM +00:00
這個日期是UTC。
如果我在我的SQL中使用相同的格式,並將它作爲字符串在where子句中工作正常。例如:
select column_name1 from table_name where column_name1 = '19-SEP-17 03.19.55.000000000 PM +00:00';
但我知道建議在這種情況下將字符串轉換爲日期。所以當我嘗試使用TO_TIMESTAMP執行此操作時,我無法找到在SQL中添加的正確格式。
我曾嘗試是:
select column_name1 from table_name where column_name1 = TO_TIMESTAMP('19-SEP-17 03.19.55.000000000 PM +00:00', 'DD-MON-YYYY HH:MI:SS.FF A.M. TZH:TZM');
而且即使AM/PM已經在那裏,我仍然得到錯誤爲: AM/A.M. or PM/P.M. required
我已經嘗試添加 'NLS_DATE_LANGUAGE =美國',以及但仍然有相同的錯誤。
我在這裏錯過了什麼?如何更改TO_TIMESTAMP格式,以便將此字符串轉換爲TIMESTAMP?
非常感謝您的回覆,並且很抱歉對此很晚了。我最終更改了Oracle SQL Developer中的默認時間戳顯示格式,並將其更改爲「YYYY-MM-DD HH24.MI.SSXFF」,並將時間戳改爲時區「YYYY-MM-DD HH24.MI.SSXFF TZR」。我從工具 - >首選項 - >數據庫 - > NLS – 300
@ 300 - 大多數開發人員更喜歡24小時格式(減少混淆,減少像這樣的惱人規則的機會)。上午/下午將用於非技術性的「消費者」報告。 – mathguy