首页 > 解决方案 > MS Access 中带有日期类型参数的 SQL 语句

问题描述

我有一个用于在 MS Access 中查询的 SQL 语句。我想得到日期之间的交易结果。

这是我的代码:

 DateTime pFromNew = Convert.ToDateTime(this.dateTimePicker1.Value.ToString("yyyy-MM-dd"));
 DateTime pToNew = Convert.ToDateTime(this.dateTimePicker2.Value.ToString("yyyy-MM-dd"));

 string pFrom = "#" + pFromNew.ToString() + "#";
 string pTo = "#" + pToNew.ToString() + "#";

 chrTrans.Series["Class"].Points.Clear();

 oconn.Open();

 OleDbCommand cmd = oconn.CreateCommand();
 cmd.CommandType = CommandType.Text;

 cmd.CommandText = "Select ClassType,Nametree,TransWeight,Valuedate  from tblTrans where Nametree = '" + this.cboNametree.Text.Trim() + "' and valuedate between '" + pFrom + "' and '" + pTo + "'";
 //+ "' and valuedate between '"+ this.dateTimePicker1.Text +"' and '"+ this.dateTimePicker2.Text +"'";

 cmd.ExecuteNonQuery();

这个说法有什么问题?

我总是收到这个错误:

标准表达式中的数据类型不匹配。

标签: c#ms-accessport

解决方案


你把这弄得太复杂了,来回转换了三遍。

它可以简化为:

string pFrom = "#" + this.dateTimePicker1.Value.ToString("yyyy'/'MM'/'dd") + "#";
string pTo = "#" + this.dateTimePicker2.Value.ToString("yyyy'/'MM'/'dd") + "#";

// snip

cmd.CommandText = "Select ClassType,Nametree,TransWeight,Valuedate from tblTrans where Nametree = '" + this.cboNametree.Text.Trim() + "' and valuedate between " + pFrom + " and " + pTo + "";

推荐阅读