3

エラーが発生します:ORA-01855: AM/A.M. or PM/P.M. required

次のクエリを実行しようとすると。

  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";
4

2 に答える 2

6

フォーマット マスクは、変換する文字列のフォーマットと一致する必要があります。したがって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') )
于 2012-03-12T09:24:56.667 に答える