c# Datetimepicker -日期搜索与返回结果不同

本文关键字:返回 结果 搜索 Datetimepicker 日期 | 更新日期: 2023-09-27 18:09:10

我的独立c# .net应用程序在datetimepicker方面有一个问题。我花了几个星期的时间还是没能解决。我希望你能帮我一个忙。

我有一个[创建预订],[搜索预订],和[数据库]使用ms访问。

1)使用datetimepicker创建预订日期。格式=短cmd.CommandText = "insert into booking(cname, bdate, btime, ccontact, sname) Values('" + txt_cname.Text + "','" + **dtp_bdate.Value.Date** + "','" + dtp_btime.Value + "','" + txt_ccontact.Text + "','" + txt_sname.Text + "')";

2) DB中的数据存储正确。示例:01/10/2011(即2011年10月1日)

3)使用datetimepicker搜索预订日期。短格式=

string strSql = String.Format("SELECT * FROM booking WHERE bdate = #{0}#", dtp_search.Value.Date);

当我尝试在2011年10月1日搜索时。它不会为我返回结果。但是当我尝试在2011年10月1日搜索时,它就出现了结果。

我在DB上检查并确认日期格式保存为01/10/2011。但是我不明白为什么会发生这种奇怪的事情。

有什么好心人能帮我一下吗?

衷心感谢。

谢谢你,加里绮

c# Datetimepicker -日期搜索与返回结果不同

看起来Access允许sql查询(MM/DD/YYYY)中的固定格式日期。并且根据数据库浏览器的当前区域性格式化显示日期(因此得到DD/MM/YYYY)。在查询中使用(MM/DD/YYYY)

"如果"你的数据是正确的,尝试使用参数代替:

  DataTable dt = new DataTable();
  using (var cn = new OleDbConnection(strConn))
  {
    cn.Open();
    using (var cmd = new OleDbCommand("SELECT * FROM booking WHERE bdate = @bdate", cn))
    {
      cmd.Parameters.AddWithValue("@bdate", dtp_bdate.Value.Date);
      using (OleDbDataAdapter oda = new OleDbDataAdapter(cmd))
        oda.Fill(dt);
    }
  }

否则,请尝试对"WHERE bdate = @bdate"语句尝试>=或<=来调试语句,看看这是否会改变结果。