【发布时间】:2017-06-08 23:04:59
【问题描述】:
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 类型。我该如何解决这个问题?
您的帮助将不胜感激。
【问题讨论】:
-
将参数添加到cmd对象的代码在哪里?
-
@flaZer 我已经更新了问题。
-
在这里出局......也许在数据库中,JOINDATE 有 NULL 值,您找到真正的问题了吗?因为否则我看不到您的代码有问题。
-
"select * from testtable where nvl(joinDate,to_date(''1900/01/01'', 'YYYY/MM/DD'))
-
我对 Oracle 日期也有点生疏...也许您甚至可以将其与零进行比较... 其中 joinDate = 0 或 joinDate。相当肯定(但不完全!)遇到第一个条件时的 SQL,不会尝试检查第二个条件,但同样,不完全确定......
标签: sql .net oracle date oracle-sqldeveloper