【发布时间】:2013-02-01 19:14:00
【问题描述】:
在我的 Windows 窗体中,我有一个文本框,用户可以在其中输入格式为 16/02/2013 的日期,以搜索该特定日期的所有条目。 在数据库中,我有一列以这种格式存储日期。16/02/2013 02:47:36 AM。
有人可以建议我使用 sql 查询从数据库中提取该特定日期的所有条目并将其放在数据集上。
我正在使用它,但它不起作用。
public DataSet OrderByDate(string date)
{
// string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Amrit\\Desktop\\Database.accdb ;Persist Security Info=False;";
DataSet dataSet = new DataSet();
OleDbConnection oleConn = new OleDbConnection(connString);
try
{
oleConn.Open();
string sql = "SELECT Customer.[Title] + SPACE(2) + Customer.[Customer's Name] as CustomerName, Customer.[Customer's Ebayname], Customer.[Email Address], Customer.[Phone Number], Customer.[Address 1] + SPACE(2) +Customer.[Address 2] + SPACE(2) + Customer.[City] + SPACE(2) + Customer.[Post Code]+ SPACE(2) + Customer.[Country] as Address, Customer.[Item Purchased], Customer.[Purchased Date], Customer.[Total Price] FROM Customer WHERE [Purchased Date] LIKE '" + "'" + date + "%'";
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sql, oleConn);
dataAdapter.Fill(dataSet, "Customer");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
oleConn.Close();
}
if (dataSet.Tables.Count <= 0)
return null;
else
return dataSet;
}
在数据库中,日期时间以日期/时间格式存储。
【问题讨论】:
-
在查询中使用绑定参数而不是 SQL 语句中的文字。这不是好的做法。此外,日期/时间不是字符串,因此“LIKE”在这里没有意义。应该是条件运算符( =、BETWEEN)等
-
我知道,一旦我能让这个东西工作,我会改变它..
-
您不能将
LIKE与日期一起使用。你想达到什么目的? -
@AmritSharma,您使用的是哪个 RDBMS?
-
查看 BETWEEN 运算符的日期,并给它一个从午夜到一天结束的范围。