Oracle no aceptar fechas antes de 2000
Pregunta
Estoy haciendo una inserción de una C # .NET aplicación en una base de datos Oracle. La consulta que está fallando se ve algo como:
INSERT INTO staging (create_date) VALUES ('16-Nov-1999')
Cuando lo ejecuto desde SQL Navigator, funciona muy bien. A través de .NET, la base de datos arroja:
ORA-01858: a non-numeric character was found where a numeric was expected
Me corrió un par de casos de prueba y confirmó que es el año causando la excepción. Nada después de la fecha de 31 -Dic-1999' funciona muy bien.
Solución
mejor utilizar la función TO_DATE al presentar valores que son para ser almacenados como fechas :
INSERT INTO staging
(create_date)
VALUES
(TO_DATE('16-Nov-1999', 'DD-MON-YYYY'))
Otros consejos
El problema es con el uso del proveedor System.Data.OleDb genérico. La específica System.Data.OracleClient Oracle no tiene este problema.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow