You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Access中基于日期查询当前月及上月的记录

嘿,这个Access查询的需求我熟!要抓取当前月及上个月的ReleaseDate记录,还得处理1月时上月属于上一年的情况,用Access自带的日期函数就能轻松搞定,我给你详细说说:

Access查询方案:获取当前月+上月的记录

你只需要在查询设计视图中,给ReleaseDate字段的条件行输入以下表达式就行:

Between DateSerial(Year(Date()), Month(Date())-1, 1) And DateSerial(Year(Date()), Month(Date())+1, 0)

为啥这个表达式能搞定跨年问题?我拆解开给你看:

  • 上个月的第一天:DateSerial(Year(Date()), Month(Date())-1, 1)
    用Date()拿到当前日期,Year(Date())取年份,Month(Date())-1取上月月份。如果当前是1月,Month(Date())-1会得到0,这时候DateSerial会自动把年份减1,月份替换成12,直接生成上一年的12月1日,完美解决跨年场景。

  • 当前月的最后一天:DateSerial(Year(Date()), Month(Date())+1, 0)
    这是个实用小技巧:DateSerial函数如果接收的“日”参数是0,会返回传入月份的前一个月的最后一天。所以传入当前月份+1、日为0,就得到了当前月的最后一天——比如5月的话,传入6月0日就是5月31日,1月的话传入2月0日就是1月31日。

另一种等价写法(用DateAdd)

如果你习惯用DateAdd函数,也可以这么写条件:

ReleaseDate >= DateAdd("m", -1, DateSerial(Year(Date()), Month(Date()), 1)) 
And ReleaseDate <= DateSerial(Year(Date()), Month(Date())+1, 0)

这里DateAdd("m", -1, ...)是把当前月的第一天往前推一个月,效果和直接生成上月第一天完全一样。

小测试建议

怕出错的话,你可以打开Access的立即窗口(按Ctrl+G就能调出来),输入这些表达式验证结果:

  • 输入? DateSerial(Year(Date()), Month(Date())-1, 1),回车看是不是上个月第一天
  • 输入? DateSerial(Year(Date()), Month(Date())+1, 0),确认是不是当前月最后一天

这样设置完条件,查询就会精准返回所有ReleaseDate在上个月1日到当前月最后一天之间的记录啦!

内容的提问来源于stack exchange,提问作者Thomas Heikkila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 14:27:40