オラクルは2000年以前に日付を受け入れていません
質問
C#.NETアプリからOracleデータベースに挿入しています。失敗しているクエリは次のように見えます:
INSERT INTO staging (create_date) VALUES ('16-Nov-1999')
SQL Navigatorから実行すると、正常に実行されます。 .NETを介して、データベースがスローします。
ORA-01858: a non-numeric character was found where a numeric was expected
いくつかのテストケースを実行し、例外を引き起こす年であることを確認しました。 '31- 12月1999年以降のすべては正常に実行されます。
解決
使用する方が良い to_date関数 日付として保存される値を提出するとき:
INSERT INTO staging
(create_date)
VALUES
(TO_DATE('16-Nov-1999', 'DD-MON-YYYY'))
他のヒント
問題は、generic System.data.oledbプロバイダーを使用することです。 Oracle固有のsystem.data.oracleclientにはこの問題はありません。
所属していません StackOverflow