给ORA-01841 :(完整)年份必须介于-4713和+9999之间,而不是来自.net应用程序的Oracle select语句中的0

时间:2017-06-08 23:05:00

标签: sql .net oracle date oracle-sqldeveloper

string vDate="2017/06/08";
OracleCommand cmd= new OracleCommand();
OracleParamater pDate= new OracleParameter("pDate",OracleDbType.Varchar2);
pDate.Direction=ParameterDirection.Input;
pDate.Value= vDate;
cmd.Parameters.Add(pDate);
cmd.CommandText="select * from testtable where joinDate<=to_date(:pDate, 'YYYY/MM/DD')";
cmd.CommandType=CommandType.Text;
DataSet ds= new DataSet();
OracleDataAdapter adp= new OracleDataAdapter(); //Please assume that db is connected successfully.
adp.fill(ds); 

joinDate类型是Date。

当应用程序执行查询时,它会给出ora-01841错误。我也尝试使用OracleDBType.Date,将vDate指定为DateTime类型。我该如何解决这个问题?

我们非常感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

我认为应该是new OracleParameter("pDate",OracleDbType.Varchar2)而不是OracleParameter("pDate",OracleDbType.date);

答案 1 :(得分:0)

你应该更好地使用它:

DateTime vDate = new DateTime(2017, 6, 8);
OracleCommand cmd= new OracleCommand();
cmd.CommandText="select * from testtable where joinDate <= :pDate";
OracleParamater pDate= new OracleParameter("pDate",OracleDbType.Date);
pDate.Direction=ParameterDirection.Input;
pDate.Value= vDate;
cmd.Parameters.Add(pDate);

答案 2 :(得分:0)

如果您有其他参数,请确保它们的顺序正确。