ホームページ >データベース >mysql チュートリアル >SQL INSERT ステートメントの結果が ORA-01861: リテラルがフォーマット文字列と一致しないのはなぜですか?

SQL INSERT ステートメントの結果が ORA-01861: リテラルがフォーマット文字列と一致しないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-28 16:00:17394ブラウズ

Why Does My SQL INSERT Statement Result in ORA-01861: Literal Does Not Match Format String?

ORA-01861: リテラルがフォーマット文字列と一致しません

SQL で、エラー「ORA-01861: リテラルがフォーマット文字列と一致しません」 " は、データ値をテーブルに挿入するときに発生し、リテラルの形式が指定された形式文字列と一致しません。このエラーは、特定の形式で日付値を挿入しようとしたときによく発生します。

次の INSERT ステートメントを考えてみましょう:

INSERT INTO Patient (PatientNo, PatientFirstName, PatientLastName, PatientStreetAddress, PatientTown, PatientCounty, PatientPostcode, DOB, Gender, PatientHomeTelephoneNumber, PatientMobileTelephoneNumber)
VALUES (121, 'Miles', 'Malone', '64 Zoo Lane', 'Clapham', 'United Kingdom', 'SW4 9LP', '1989-12-09', 'M', 02086950291, 07498635200);

このステートメントでは、DOB 列が日付として定義されています。ただし、リテラル「1989-12-09」は、SQL 日付として認識される形式ではありません。この問題を解決するには、TO_DATE() 関数を使用して文字列リテラルを正しい形式に変換します。

INSERT INTO Patient (PatientNo, PatientFirstName, PatientLastName, PatientStreetAddress, PatientTown, PatientCounty, PatientPostcode, DOB, Gender, PatientHomeTelephoneNumber, PatientMobileTelephoneNumber)
VALUES (121, 'Miles', 'Malone', '64 Zoo Lane', 'Clapham', 'United Kingdom', 'SW4 9LP', TO_DATE('1989-12-09', 'YYYY-MM-DD'), 'M', 02086950291, 07498635200);

形式文字列 'YYYY-MM-DD' を指定すると、SQL はリテラル '1989- を認識します。 12-09' を年-月-日形式の日付として扱い、DOB 列に正常に挿入します。

以上がSQL INSERT ステートメントの結果が ORA-01861: リテラルがフォーマット文字列と一致しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。