如何在指定日期之间搜索数据

时间:2010-03-31 21:00:47

标签: asp.net sql ms-access

我有一个查询

OleDbCommand com = _
    new OleDbCommand("select * from techs where actd0v between '" + _
                     TextBox1.Text + "' and '" + TextBox2.Text +  "'" , con);

其中文本框1和2是我想要检索与这些日期相关的某些日期的指定日期。但是当我试图找到给定日期之间的数据时,它给了我一些不包括在它们之间的日期。是否需要指定任何模式以获取指定日期之间发生的所有日期。

我正在为我的项目使用ms access数据库。

3 个答案:

答案 0 :(得分:1)

查询格式正确无误。但是:

请注意这里的SQL注入!您需要确保输入确实是一个日期,而不是像:

'; drop table users; --

你可以做的一件事是:

DateTime.Parse(TextBox1.Text)

并使用其中一种.To *方法,Access将找到一个令人满意的格式。或者从DateTime对象创建ODBC规范格式,该格式通常有效:

ODBC Canonical:yyyy-mm-dd hh:mm:ss.sss

这是一个很好的overview of Sql Injection你应该看看。它不是特定于Access的,但它确实很好地传达了这个概念。

答案 1 :(得分:0)

我猜测文本框中的文本不是OleDB日期的可识别格式。尝试使用“yyyy-MM-dd”格式。示例:2010-03-31。您可以在调试模式下运行应用程序并发布完整查询吗?

答案 2 :(得分:0)

除了SQL注入警告......我认为你信任你的用户。

在日期的任一侧加上数字标记(#)

OleDbCommand com = _
    new OleDbCommand("select * from techs where actd0v between #" + _
                    TextBox1.Text + "# and #" + TextBox2.Text + "#" , con);

MS Access应该弄明白。

可能是“之间”是在日期的字符串表示而不是日期类型上完成的;这可以解释出界的结果。