C# 使用C选择oracle日期列

C# 使用C选择oracle日期列,c#,sql,oracle,date,C#,Sql,Oracle,Date,我正在尝试使用C按日期从Oracle数据库中选择数据。然而,我总是得到一个空数据集,尽管相同的查询字符串在Oracle SQL Developer中运行良好 String Query = "Select position_date from position"; OracleDataAdapter adapter = new OracleDataAdapter(Query, ocon); adapter.Fill(ds, "table"); //where ds is a dataset P

我正在尝试使用C按日期从Oracle数据库中选择数据。然而,我总是得到一个空数据集,尽管相同的查询字符串在Oracle SQL Developer中运行良好

String Query = "Select position_date from position";
OracleDataAdapter adapter = new OracleDataAdapter(Query, ocon); 
adapter.Fill(ds, "table"); //where ds is a dataset 
PrintDataSet(ds);
返回

3/8/2011 12:00:00 AM.... and more
然而,当我将我的查询更改为以下时,则没有输出

String Query = "Select position_date from position 
where to_char(position_date, 'mm-dd-yyyy') = '05-17-2012'"

此查询在oracle sql developer中运行良好。我也尝试过truncsysdate,但似乎没有任何效果!:

如果您的日期没有时间成分,如果是这样,则使用检查约束进行保证,然后:

Select position_date
from   position 
where  position_date = date '2012-05-17'
否则:

Select position_date
from   position 
where  position_date >= date '2012-05-17' and 
       position_date <  date '2012-05-17' + 1
成功了


谢谢。

有点生疏,但试试这个-从位置选择*位置,位置为'05-17-2012','mm-dd-yyyy'Well 3/8/2011与05-17-2012是完全不同的一天。你没有得到任何回报对我来说是有道理的。您不应该将日期转换为字符串,而应该将字符串转换为日期。使用position\u date=to\u date'05-17-2012','mm dd yyyy'将使Oracle能够在position\u date上使用索引。@horse,可能是这样,但它不是等效的查询。发布的查询应在2012年5月17日获取所有信息,您的查询将在2012年5月17日午夜获取所有信息。您可能指的是TRUNCposition_date=to_date'05-17-2012','mm-dd-yyyy','query在oracle sql developer中运行良好'是什么意思?它是否返回任何数据?@DCookie:是的,你当然是对的。字符串查询=从position pos中选择position\u date,其中pos.position\u date>=日期'2012-05-17'和pos.position\u dateselect * from position where trunc(position_date) = to_date('05-17-2012', 'mm-dd-yyyy')