Oracle ne pas accepter les dates avant 2000
Question
Je fais un insert d'un C # .NET application dans une base de données Oracle. La requête qui ressemble échoue quelque chose comme:
INSERT INTO staging (create_date) VALUES ('16-Nov-1999')
Quand je le lance à partir de SQL Navigator, il fonctionne très bien. Grâce à .NET, la base de données lance:
ORA-01858: a non-numeric character was found where a numeric was expected
J'ai couru quelques cas de test et a confirmé que c'est l'année faisant l'exception. Tout ce qui suit '31 1999' --déc fonctionne très bien.
La solution
Il vaut mieux utiliser le fonction TO_DATE lors de la présentation des valeurs qui doivent être stockées comme des dates :
INSERT INTO staging
(create_date)
VALUES
(TO_DATE('16-Nov-1999', 'DD-MON-YYYY'))
Autres conseils
La question est à l'aide du fournisseur de System.Data.Oledb générique. Le System.Data.OracleClient spécifique Oracle n'a pas ce problème.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow