使用C#查询Access 2007 DateTime

时间:2013-07-29 13:14:46

标签: c# sql datetime ms-access-2007

我刚刚花了几个小时尝试做一些我认为非常简单的事情。当我尝试在Access 2007数据库上运行带日期的参数化查询时,我遇到“条件表达式中的数据类型不匹配”错误。数据库中的问题列是“日期/时间”数据类型。

在一个简化的例子中 -

dataCommand.CommandText "SELECT * FROM tblData WHERE IDate > #24/07/2013 16:54:51#"

这很有效。但是一旦我尝试参数化日期,我就会遇到错误。所以..

dataCommand.CommandText = "SELECT * FROM tblData WHERE IDate > @BackSearchDate"
....
dataCommand.Parameters.Add(new OleDbParameter("@BackSearchDate", backSearchDate))

会遇到错误。我试图以多种方式提供backSearchDate变量。 DateTime,各种格式的字符串等不起作用。

我发现this page表示这是一个已知的错误 - 但我无法让页面上的任何变通办法工作。我很难过。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

所以我要说的是:

dataCommand.CommandText = "SELECT * FROM tblData WHERE IDate > @BackSearchDate"

修改

查看Gord Thompson的答案表明你应该尝试:

var conn = new OleDbConnection(@"ConnString");
conn.Open();
var cmd = new OleDbCommand(
                "SELECT * FROM tblData WHERE IDate > @BackSearchDate", 
                conn);
cmd.Parameters.AddWithValue("@BackSearchDate", new DateTime(backSearchDate));
OleDbDataReader rdr = cmd.ExecuteReader();

答案 1 :(得分:0)

对于将来遇到此问题的任何人 - 如果您按以下方式添加参数,它似乎有效:

DbParameter p = dataCommand.CreateParameter();
p.ParameterName = "@BackSearchDate";
p.Value = backSearchDate;
p.DbType = DbType.Date;
dataCommand.Parameters.Add(p);