【发布时间】:2018-12-08 17:17:49
【问题描述】:
我正在尝试将 DateTime 与给定日期进行比较。
string conString = @"Provider=Microsoft.JET.OLEDB.4.0;" + @"data
source=C:\\myDB.mdb";
OleDbConnection conn = new OleDbConnection(conString);
conn.Open();
DataSet ds = new DataSet();
String q = "SELECT * FROM Booking WHERE CheckIn < DATE()";
//String q = "SELECT * FROM Booking WHERE CheckIn < '01.01.2020'";
//String q = "SELECT * FROM Booking WHERE CheckIn < 01.01.2020";
//String q = "SELECT * FROM Booking WHERE CheckIn < '01.01.2020 00:00:00'";
//String q = "SELECT * FROM Booking WHERE CheckIn < 01.01.2020 00:00:00";
OleDbDataAdapter adapter = new OleDbDataAdapter(q, conn);
Console.WriteLine(q);
adapter.Fill(ds);
conn.Close();
DataTable dt = ds.Tables[0];
if (dt.Rows.Count > 0)
{
MessageBox.Show(dt.Rows[0][0].ToString());
}
else
{
MessageBox.Show("0 found");
}
代码显示了我如何将其与当前时间进行比较。它工作正常并导致
01.12.2018 00:00:00
。但是,如果我尝试将 currentTime 替换为特定值(请参阅我尝试过的内容),它会抛出 System.Data.OleDb.OleDbException 或 SQL 语法错误。我现在有点困惑,因为 DATE() 返回一个与我尝试过的格式完全相同的值。有谁知道我错过了什么?
最好的问候
克鲁斯佩
【问题讨论】:
-
Msdn有关于iso日期格式的具体例子
-
使用参数,看我对这个问题的回答:stackoverflow.com/questions/53352625/…(你甚至可以说你的问题是重复的)
-
日期没有格式。使用参数并传递一个日期,它将起作用。您的代码正在传递文本