我们正在尝试创建一个用户输入日期的查询,然后查询会根据该日期提取所有记录。在查询的设计视图中,我们在条件中尝试了[输入日期],但它不会拉,因为它将匹配日期而不是时间。我看到很多日期用##标记格式化以忽略时间但我不知道如何将其合并到我们的查询中。
编辑:是的我们正在使用默认为日期/时间字段的Access。
我们不耐烦,只是要做一个强制用户输入两个日期的范围。老实说,它解决了两个问题,但这对Access来说是一个令人沮丧的问题。
答案 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()
的情况下尝试进行日期/时间数学运算。
定义参数也是一个好主意,因为如果用户输入无效日期,他们将获得有用的错误消息,而不仅仅是错误的结果。