簡體   English   中英

使用AM時出現“需要AM / AM或需要PM / PM”錯誤

[英]“AM/A.M. or PM/P.M. required” error though AM is used

我在oracle 12c上具有table_name,它的column_name1的數據類型為“ TIMESTAMP(6)WITH TIME ZONE”。 我正在使用SQL Developer。

當我使用SQL Developer從column_name1中選擇任何內容時,會看到類似UTC的日期: 19-SEP-17 03.19.55.000000000 PM +00:00

如果我在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/AM or PM/PM required

我也嘗試添加'nls_date_language = american',但仍然收到相同的錯誤。

我在這里想念什么? 如何更改TO_TIMESTAMP格式,以便可以將此字符串轉換為TIMESTAMP?

實際上,您實際上是否在使用TO_TIMESTAMP_TZ因為該列是帶有WITH TIME ZONE的時間戳,並且輸入字符串和格式模型都是帶有WITH TIME ZONE的時間戳? (如果您像這樣使用TO_TIMESTAMP ,則會收到其他錯誤,例如“無法識別日期格式”,因為格式模型中的時區格式元素不能包含沒有時區的時間戳)。

假設是這種情況:問題是由在輸入字符串中傳遞PM (不帶點),但在格式模型中具有AM (帶點)引起的。 在兩個地方都使用相同的格式-帶點或不帶點,但要保持一致。

在某些地方,Oracle不會為不匹配的分隔符大驚小怪,但在這種情況下,它確實做到了。 如果願意,您可以翻閱文檔以找出Oracle將會嘗試哪種替代方案;以及 但這聽起來像是一項學術練習。 只要在輸入字符串和格式模型之間保持一致,就不會有任何問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM