Ms Access仅显示前一周的记录

时间:2012-02-26 03:09:05

标签: ms-access date

在MS Access中,我尝试过滤以仅显示上周的记录。 我有根据记录日期显示周数的列。 如果当前周不是1,则在条件字段中使用DatePart("ww",Date(),2,2)-1效果很好。它不适用于前一年。

我如何才能显示前一周或两周的记录,即使是去年的记录?

2 个答案:

答案 0 :(得分:3)

对于最近一周的数据,请从这样的事情开始......

YourDateField Between (Date() -7) AND Date()

当您的目标 YourDateField 范围包含2年的日期时,该方法不会中断。该方法的另一个优点是查询可以使用 YourDateField 上的索引(如果有的话)。在这种情况下,db引擎可以检查索引以查找哪些行符合您的条件,并且只读取匹配的行而不是记录源中的所有行。 (如果您没有 YourDateField 的索引,请添加一个以查看它是否会显着加快查询速度。如果索引无效,您可以删除索引。)

相反,使用基于DatePart()函数的WHERE条件将强制db引擎检查查询记录源中的每一行。这可能是一个性能瓶颈,对于庞大的表来说这可能很重要,特别是如果它是一个需要通过网络连接读取数据的链接表。

编辑:我误解了你的想法。对于上周一开始的一周,我使用了这个条件:

Between Date() - ( 6 + Weekday(Date(), 2))
    AND Date() - Weekday(Date(), 2)

只有在运行查询时,db引擎才会对这些表达式进行一次评估,因此虽然这种方法比我最初建议的方法更复杂,但它仍然可以提供比使用DatePart()对每一行进行的潜在性能改进。数据源。

答案 1 :(得分:0)

HansUp给了我一个解决问题的想法。 使用Between (Date()-7-Weekday(Date(),2)+1) And (Date()-Weekday(Date(),2)+1),应该给我以前的日历周。 Weekday()返回一周的daynumber。从日期减去工作日编号(+1)应该返回星期一。