Oracle keine Termine vor dem Jahr 2000 zu akzeptieren
Frage
Ich mache einen Einsatz aus einer C # .NET-Anwendung in eine Oracle-Datenbank. Die Abfrage, die in etwa so aussieht versagt:
INSERT INTO staging (create_date) VALUES ('16-Nov-1999')
Wenn ich es von SQL Navigator ausführen, wird es in Ordnung. Durch .NET, wirft die Datenbank:
ORA-01858: a non-numeric character was found where a numeric was expected
lief ich ein paar Testfälle und bestätigte, dass es das Jahr ist die Ausnahme verursacht. Alles, was nach '31 -Dec-1999' läuft gut.
Lösung
Besser das TO_DATE zu verwenden, wenn Werte einreichen, die als DATEs werden sollen, gespeichert :
INSERT INTO staging
(create_date)
VALUES
(TO_DATE('16-Nov-1999', 'DD-MON-YYYY'))
Andere Tipps
Das Problem ist mit dem generischen System.Data.Oledb Provider. Die Oracle-spezifische System.Data.OracleClient dieses Problem nicht hat.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow