如何修改Ms Access查询WHERE子句以筛选上月及本月数据?
解决Access查询获取本月及上月全部数据的问题
你的问题很典型——用固定天数(比如60天)来筛选月份数据确实会踩坑,毕竟不同月份天数不一样,要是遇到1月,减60天还会跨到去年,根本覆盖不了完整的上月。这里给你两个精准的解决方案,根据你的实际需求选就行:
方案1:获取上月全月 + 本月至今的数据
这个适用于你需要看到上月所有记录,加上本月到今天的所有数据:
WHERE t.AllDate >= DateSerial(Year(Date()), Month(Date())-1, 1) AND t.AllDate <= Date()
方案2:获取上月全月 + 本月全月的数据
如果不管当前日期是几号,都要包含本月完整的所有数据(比如今天是5月15号,也要包含5月16到31号的未来记录,如果有的话):
WHERE t.AllDate >= DateSerial(Year(Date()), Month(Date())-1, 1) AND t.AllDate <= DateSerial(Year(Date()), Month(Date())+1, 0)
关键函数解释
- DateSerial(year, month, day):Access里生成指定日期的核心函数,非常适合处理月份边界:
DateSerial(Year(Date()), Month(Date())-1, 1):直接生成上月第一天,比如现在是2024年5月,就返回2024-04-01DateSerial(Year(Date()), Month(Date())+1, 0):用“下月0号”的小技巧得到本月最后一天,5月的话就返回2024-05-31- 同理,
DateSerial(Year(Date()), Month(Date()), 0)可以单独拿到上月最后一天,如果你只需要上月数据的话,用这个和上月第一天组合就行
这种方式完全不受月份天数影响,不管是2月的28天还是3月的31天,都能精准筛选出你要的完整月份数据。
内容的提问来源于stack exchange,提问作者YvetteLee
相关产品推荐
相关产品推荐

