如何在Access查询中获取日期

| 在Access 2000中,我们只能使用哪个函数来获取日期值? 创建日期 2010/4/4上午2:32:00 2010/4/4下午2:32:00 19/4/2010 10:14:00 AM 17/5/2010下午9:34:00 如果我查询:
 SELECT * FROM tblTest WHERE CreateDate  <= #20/4/2010#
我只看到19/4/2010的记录。 实际上,结果应该显示前3条记录,不是吗?     
已邀请:
您的实际日期值#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#
    

要回复问题请先登录注册