أوراكل لا تقبل التواريخ قبل عام 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 -DEC-1999 "يعمل بشكل جيد.
المحلول
من الأفضل استخدام وظيفة to_date عند تقديم القيم التي سيتم تخزينها كتواريخ:
INSERT INTO staging
(create_date)
VALUES
(TO_DATE('16-Nov-1999', 'DD-MON-YYYY'))
نصائح أخرى
المشكلة هي استخدام نظام التشغيل العام. data.oledb. Oracle محدد System.data.oracleclient ليس لديه هذه المشكلة.
لا تنتمي إلى StackOverflow