MS Access选择具有变量的记录
我们正在尝试进行查询,以便用户输入日期,并且查询会根据该日期提取所有记录。在查询的设计视图中,我们已经在条件中尝试了[输入日期],但它不会拉,因为它会匹配日期而不是时间。我已经看到很多使用##标记格式的日期来忽略时间,但我不知道如何将它纳入我们的查询。MS Access选择具有变量的记录
编辑:是的,我们正在使用默认为日期/时间字段的Access。
我们很不耐烦,只打算做一个范围,迫使用户输入两个日期。老实说,它需要处理两个问题,但这是Access的一个令人沮丧的问题。
因此,您在数据库中有时间戳,您想通过单一日期查询?
有两种方法可以做到这一点:
1)剥下时间部分的数据库字段
SELECT *
FROM Table
WHERE DateValue([DateField]) = [Enter Date]
,这不是很好的表现明智,但确定为小桌子
2 )您添加时间到您的输入日期和使用之间哪个更好的性能明智
SELECT *
FROM table
WHERE [DateField] BETWEEN [Enter Date] AND [Enter Date] + #23:59:59#
thx - 已更新 – 2009-09-10 16:45:49
谢谢,不幸的是它没有返回任何记录 – Terry 2009-09-10 17:17:15
@DJ:你认为[Enter Date]的值也可能有一个不是午夜的时间元素?我认为在添加#23:59:59#之前,您应该将[输入日期]值舍入到午夜。 – onedaywhen 2009-09-11 11:23:46
我猜你的数据基本上是以dateTime格式输入的。在这种情况下,您应该在datevalue(myDateField)上构建查询,而不是在myDateField上构建它。您的查询,然后将看起来像(在SQL窗口)
SELECT * From MyTable WHERE dateValue(myDateField) = [enter date here]
,而不是
SELECT * From MyTable WHERE myDateField = [enter date here]
谢谢,不幸的是它没有返回任何记录 – Terry 2009-09-10 17:16:23
我会调整DJ的建议有关BETWEEN
,因为我认为它的工作原理我的方式从来没有完全信任d喜欢它(为第二个值增加1秒的原因是因为第二个值包含在BETWEEN
范围内,这对我来说一直是违反直觉的)。
无论如何,我的建议是:
这还不是全部,不同的,但它避免了添加适量的BETWEEN
第二个参数的问题。如果不使用DateAdd()
或DateDiff()
,我总是谨防尝试日期/时间的数学运算。
定义参数也是一个好主意,因为如果用户输入无效日期,他们会得到一个有用的错误消息,而不是错误的结果。
对不起,我的解决方案没有工作。还有一种方法可以让它只用一个用户输入。在查询数据之前,通过输入框将日期加入,并将其添加到您的SELECT指令中。你可以用记录集或查询对象来做到这一点。 – 2009-09-11 09:19:19