3

我想提取上个月20号到现在的数据,但是做BETWEEN AND命令的时候不能做函数吗?

WHERE ([dtUpdated] BETWEEN ((Year(Date()))-(Month(Date())-1)-20)
    AND (Date()))
4

2 回答 2

3

您可以使用DateAdd从今天的日期减去一个月。这是立即窗口中的一个示例。

? Date()
8/15/2013 
? DateAdd("m", -1, Date())
7/15/2013 

然后,您可以确定上一个日期的YearMonth

? Year(DateAdd("m", -1, Date()))
 2013 
? Month(DateAdd("m", -1, Date()))
 7 

所以最后你可以把DateSerial, Year,Month和 20 作为一天。

? DateSerial(Year(DateAdd("m", -1, Date())), _
    Month(DateAdd("m", -1, Date())), 20)
7/20/2013 

在查询中,像这样尝试...

WHERE [dtUpdated] BETWEEN
    DateSerial(
        Year(DateAdd("m", -1, Date())),
        Month(DateAdd("m", -1, Date())),
        20)
    AND Date()
于 2013-08-15T16:21:29.057 回答
0

看起来您只是试图通过将数字以“yyyy-mm-dd”之类的日期格式来确定日期,但实际上您只是减去一堆数字(2013-3-5 = 2005),所以我我猜你遇到了类型不匹配。

我认为 MS Access 有一个DATEADD功能,您可以通过算术建立日期。

如果你想从上个月 20 日开始,那就是

  1. 添加 -1 * 当前日期数(减去当前月份的天数)
  2. 加-1个月(得到上个月)
  3. 加 20 天(得到第 20 天)

我想会是这样的

DATEADD(d, 20, DATEADD(m, -1 * Month(Date()), DATEADD(d, -1 * Day(Date()), Date())))

这可以通过随后的 DATEADD 调用来完成

于 2013-08-15T16:11:01.933 回答