SQL SELECT查询不从简单的Access数据库中检索行

时间:2011-12-18 11:20:38

标签: c# sql ms-access

数据库中的DayDate列的类型为DateTime&我正在传递一个在表单中使用DateTimePicker制定的字符串。 reader.HasRows总是返回false !!我不知道我做错了什么。任何帮助,将不胜感激。我使用的代码如下。

if (!this.con.IsConnected())
{
   this.con.Connect();
}

this.cmd = new OleDbCommand("SELECT DayNo FROM [Calendar] WHERE DayDate = " + date + "", this.con.conObj());

this.reader = cmd.ExecuteReader();
this.reader.Read();

int dayNo;
if (this.reader.HasRows)
{
   dayNo = int.Parse(reader[0].ToString());
}
else
{
   throw new InfoException("The system could not locate the date in the system");
}

1 个答案:

答案 0 :(得分:1)

问题是您将Date值与DateTime进行比较,所以从本质上讲,您可能会比较这样的值:

DayDate = "2011-12-18 14:22:54"
Date = "2011-12-18 00:00:00"

您需要从数据库日期截断时间部分,尝试以下方法:

"SELECT DayNo FROM [Calendar] WHERE dateadd(dd, 0, datediff(dd, 0, DayDate)) = " + date

或者,如果使用SQL Server 2008,您可以执行以下操作:

"SELECT DayNo FROM [Calendar] WHERE cast(DayDate As Date) = " + date