我正在尝试查询一个项目的最后 3 个月,我的月份和年份在单独的列中,如下所示:
YEAR_时期
2014 年 5
2013 年 6
2013 年 11
2011 年 6
2009 年 2
查询需要始终从当前月份和年份开始。我尝试使用DateAdd(),DateSerial()和DateDiff()都没有奏效。每当我尝试使用 month(now()-3) 时,我都会得到 2 而不是 11。
添加或减去整数和日期只是从日期中添加或减去天数。 所以Now() - 3
结果在 2016-02-15 (在这篇文章发布时是 2016-02-18)。 那显然仍然是二月份 - 因此你的结果是两个。
一试Month(DateAdd("m", -3, Now))
. 在这里,我们将-3
月份添加到当前日期,然后得到结果月份。 根据今天的日期,这将产生 11。
我想通了。
DateDiff("m",CDate(Format([PERIOD] & "/" & [YEAR_],"mm/yyyy")),Now())
这占用了这两个字段,并使它们成为一个单一的日期。然后,我取了本月和两个日期之间的月份的差异。然后,我将条件设置为 <= 3。
补遗
它可以简化为:
DateDiff("m",CDate([PERIOD] & "/" & [YEAR_]),Date())
但是,一般来说,如果可以避免,则永远不要对日期使用字符串处理,并且它很容易:
DateDiff("m",DateSerial([YEAR_],[PERIOD],1)),Date())