Oracle不接受2000年之前的日期

时间:2010-11-10 20:19:33

标签: .net sql oracle oledb ora-01858

我正在从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”之后的任何事情都运行良好。

2 个答案:

答案 0 :(得分:7)

最好在提交要存储为DATE的值时使用TO_DATE function

INSERT INTO staging 
   (create_date) 
VALUES 
   (TO_DATE('16-Nov-1999', 'DD-MON-YYYY'))

答案 1 :(得分:0)

问题在于使用通用的System.Data.OleDB提供程序。 Oracle特定的System.Data.OracleClient没有此问题。