如何在查询设计中编写标准以等于上个月的数据?

时间:2014-11-18 14:36:50

标签: ms-access ms-access-2010

我已经在几个不同的论坛上查看过,我无法找到我需要的东西,他们都将它列在SQL View中,这不是我想要的。我想在查询设计中这样做,因为它对我来说更容易。

我只想进行查询以显示我维护的数据库的某些参数。这些参数与上个月的数据相同。

我以前能够成功地查询显示过去一年的所有信息,但无法弄清楚如何显示过去几个月。

过去的一年标准:

>DateAdd("yyyy",-1,Date())

既然有效,我尝试这样做,但这对我不起作用:

>DateAdd("mmmm",-1,Date())

我确定它很简单,我只是没有在这里看到。欢迎任何帮助或建议。

参考Fionnuala提供的链接,我提出了

>DateAdd("m',-30,Date())

问题在于,它会查询今天过去30天内的所有结果。我希望只显示十月份的数据!虽然这可以轻松完成。我不希望每个月手动进入此查询并更改某些参数。我希望它是自动的,所以或下个月12月我点击查询,它显示11月的所有30天的数据。并且没有手动回程和更改任何标准的过程。

1 个答案:

答案 0 :(得分:1)

在查询设计器中,您可以使用Criteria:这样的

>=DateSerial(Year(Date()),Month(Date())-1,1) And <DateSerial(Year(Date()),Month(Date()),1)

QueryDesign.png

相应的SQL语句是

SELECT Donations.*
FROM Donations
WHERE (((Donations.DonationDate)>=DateSerial(Year(Date()),Month(Date())-1,1) 
    And (Donations.DonationDate)<DateSerial(Year(Date()),Month(Date()),1)));

如果它是在2014年11月18日运行,那么它实际上是

SELECT Donations.*
FROM Donations
WHERE (((Donations.DonationDate)>=DateSerial(2014,10,1) 
    And (Donations.DonationDate)<DateSerial(2014,11,1)));

注意:

  1. 此查询应为sargable并利用日期字段上的索引(如果存在)。

  2. 如果有人担心&#34;月环绕&#34;,DateSerial()功能会为我们处理。如果查询是在2015年1月运行的,那么第一个WHERE条件确实是... >=DateSerial(2015,0,1)但是没关系,因为它返回2014-12-01