MS Access选择带变量的记录

时间:2009-09-10 16:27:06

标签: ms-access datetime

我们正在尝试创建一个用户输入日期的查询,然后查询会根据该日期提取所有记录。在查询的设计视图中,我们在条件中尝试了[输入日期],但它不会拉,因为它将匹配日期而不是时间。我看到很多日期用##标记格式化以忽略时间但我不知道如何将其合并到我们的查询中。

编辑:是的我们正在使用默认为日期/时间字段的Access。

我们不耐烦,只是要做一个强制用户输入两个日期的范围。老实说,它解决了两个问题,但这对Access来说是一个令人沮丧的问题。

3 个答案:

答案 0 :(得分:2)

因此,您希望在一个日期内查询数据库中的时间戳吗?

有两种方法可以做到这一点:

1)剥离数据库字段中的时间部分

SELECT * 
  FROM Table 
 WHERE DateValue([DateField]) = [Enter Date]

表现不是很好,但对于小桌子来说还不错

2)您在输入日期添加时间并使用两者之间的性能更好

SELECT * 
  FROM table 
 WHERE [DateField] BETWEEN [Enter Date] AND [Enter Date] + #23:59:59#

答案 1 :(得分:2)

我猜您的数据基本上是以dateTime格式输入的。在这种情况下,您应该在datevalue(myDateField)上构建查询,而不是在myDateField上构建它。您的查询将如此(在SQL窗口中)

SELECT * From MyTable WHERE dateValue(myDateField) = [enter date here]

而不是

SELECT * From MyTable WHERE myDateField = [enter date here]

答案 2 :(得分:2)

我会调整DJ关于BETWEEN的建议,因为我从不相信它的工作方式与我喜欢的方式相同(为第二个值增加1秒不到一天的原因是因为第二个值包含在BETWEEN范围内,这对我来说似乎有点违反直觉。)

无论如何,我的建议是:

  SELECT * 
    FROM table 
   WHERE [DateField] >= [Enter Date] 
         AND [DateField] < [Enter Date] + 1

它并没有那么不同,但它避免了向BETWEEN的第二个参数添加正确数量的问题。我总是担心在不使用DateAdd()DateDiff()的情况下尝试进行日期/时间数学运算。

定义参数也是一个好主意,因为如果用户输入无效日期,他们将获得有用的错误消息,而不仅仅是错误的结果。