データ型が「TIMESTAMP(6)WITH TIME ZONE」のcolumn_name1を持つoracle 12cにtable_nameがあります。私はSQL Developerを使用しています。AMが使用されていますが、AM/A.M。またはPM/P.M。必須 "エラーが発生しました
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');
およびAS/PM AMがすでに存在しているにもかかわらず、私はまだエラーを取得:私が試してみました何
である私も '=アメリカNLS_DATE_LANGUAGE' を追加しようとしている AM/A.M. or PM/P.M. required
それでも同じエラーが発生します。
私はここで何が欠けていますか?この文字列をTIMESTAMPに変換できるように、TO_TIMESTAMP形式を変更するにはどうすればよいですか?
ご連絡ありがとうございます。ご迷惑をおかけします。ご了承ください。 Oracle SQL Developerのデフォルトのタイムスタンプ表示形式を変更し、それを 'YYYY-MM-DD HH24.MI.SSXFF'に変更し、タイムゾーンが' YYYY-MM-DD HH24.MI.SSXFF TZR'のタイムスタンプに対して変更しました。私はツール - >環境設定 - >データベース - > NLS – 300
@ 300からやった。ほとんどの開発者は24時間形式を好んだ(混乱が少なく、このような厄介なルールの機会は少ない)。 AM/PMは、非技術的な "消費者"レポートに使用されます。 – mathguy