Oracle не принимает даты до 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 поставщика. System System.data.oracleClient не имеет этой проблемы.
Не связан с StackOverflow