数据库中的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");
}
答案 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