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。但是我不明白为什么会发生这种奇怪的事情。
有什么好心人能帮我一下吗?衷心感谢。
谢谢你,加里绮
看起来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"语句尝试>=或<=来调试语句,看看这是否会改变结果。