访问查询:返回某一天发生的所有记录,忽略时间

时间:2011-05-02 18:45:40

标签: ms-access

我有一个带有日期/时间字段的发票表。我想编写一个返回特定日期所有发票的查询。

我遇到的问题是,当我按特定日期(例如04/30/2011)过滤查询时,没有返回任何记录。我怀疑Access正在尝试返回与2011年4月30日完全匹配的记录。

我想要的是一个查询,它返回2011年4月30日发生的所有发票,无论它们发生在什么时间。基本上,我希望Access能够关心当天,而不是时间。

有没有关于如何做到这一点的文件?我肯定找不到任何东西。我正在使用Access 2010.谢谢!

4 个答案:

答案 0 :(得分:3)

没有看到你的尝试,很难说你做错了什么。我想你正试图检查是否平等,这基本上意味着它必须恰好发生在午夜。

SELECT * FROM table WHERE date >= #04/30/2011# AND date < #05/01/2011#

答案 1 :(得分:2)

关于数据类型,我假设您的日期存储在datetime字段中。这也将存储时间,如果没有指定时间,则默认为午夜。我通常使用BETWEEN函数来执行此操作:

SELECT *
FROM table
WHERE datefield BETWEEN '2011-04-30' AND '2011-05-01'

由于这两个日期都是午夜,因此您将从4月30日开始收到结果。

答案 2 :(得分:2)

您对Access正在做的事情是正确的;当您提供没有时间的日期时间值时,它假定为午夜。所以“2011-04-30”的意思是“2011-04-30 00:00:00”。

Access中有一个Datediff函数,如下所示:

Datediff("d", "2011-04-30", [FieldName]) = 0

答案 3 :(得分:0)

您可以尝试以下方式:

DateAdd("d", DateDiff("d", 0, MyDate), 0 )

另一种选择:

CDate(Format(MyDate,"yyyy-mm-dd"))

其他人提到的另一种解决方案,允许您插入一个日期:

DateCol >= #2011-04-30# And DateCol <= DateAdd("d",1,#2011-04-30#)