Oracle non accettando date prima del 2000
Domanda
sto facendo un inserto da un C # .NET applicazione in un database Oracle. La query che non riesce sembra qualcosa di simile:
INSERT INTO staging (create_date) VALUES ('16-Nov-1999')
Quando l'eseguo da SQL Navigator, funziona benissimo. Attraverso .NET, il database getta:
ORA-01858: a non-numeric character was found where a numeric was expected
ho eseguito alcuni casi di test e ha confermato che è l'anno che causa l'eccezione. Tutto ciò dopo la data del 31 -Dec-1999' funziona bene.
Soluzione
meglio usare il funzione TO_DATE al momento della presentazione dei valori che devono essere memorizzati come le date :
INSERT INTO staging
(create_date)
VALUES
(TO_DATE('16-Nov-1999', 'DD-MON-YYYY'))
Altri suggerimenti
Il problema è con l'utilizzo del provider di System.Data.OleDb generico. La specifica System.Data.OracleClient Oracle non ha questo problema.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow