在Access 2000中,我们可以使用哪个函数来取回日期值?
CreateDate 20/4/2010 2:32:00 AM 20/4/2010 2:32:00 PM 19/4/2010 10:14:00 AM 17/5/2010 9:34:00 PM
如果我查询:
SELECT * FROM tblTest WHERE CreateDate <= #20/4/2010#
我只看到了19/4/2010的纪录。
实际上,结果应显示前3条记录,不是吗?
答案 0 :(得分:2)
您的文字日期值#20/4/2010#实际上是一个日期/时间值,表示4月20日的午夜。请参阅立即窗口中的此示例,该窗口使用Format()函数显示完整日期/由该文字表示的时间值。
? Format(#20/4/2010#, "d/m/yyyy hh:nn:ss AMPM")
20/4/2010 12:00:00 AM
因此,您的WHERE条件将排除20/4/2010 2:32:00 AM和20/4/2010 2:32:00 PM,因为它们大于20/4/2010 12:00:00 AM
如果您在Access会话中运行查询,则可以使用DateValue()函数将CreateDate值转换为同一日期的午夜。此查询应返回您的预期:
SELECT * FROM tblTest WHERE DateValue(CreateDate) <= #20/4/2010#
另一种方法是在一天后使用午夜作为截止值。
SELECT * FROM tblTest WHERE CreateDate < #21/4/2010#
第二个查询可以执行得更快,因为它不需要将DateValue()函数应用于tblTest中的每个CreateDate值。如果将CreateDate编入索引,则第二个查询仍会更快。第一个查询无法利用CreateDate上的索引。
此外,我更喜欢对文字值使用明确的日期格式,因此会像这样编写查询:
SELECT * FROM tblTest WHERE CreateDate < #2010/4/21#