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

如何在DB2的WHERE子句中减去一个月并查询上月数据?

调整DB2查询以获取前一个月的数据

没问题,我来帮你修改这个查询语句,实现获取2018年3月数据的需求,这里有两种实用的方法供你选择:

方法一:直接修改年份和月份参数

这是最直接的方式,既然你原来的语句是指定2018年4月,那直接把月份参数改成03即可:

SELECT distinct payment_date dated_daily 
FROM payment BB 
WHERE YEAR(payment_date)= '2018' AND MONTH(payment_date) = '03'

这种方式简单直观,适合你明确知道目标月份的场景。

方法二:使用DB2日期函数实现动态减一个月

如果以后需要更灵活的日期调整(比如要自动获取当前查询月份的前一个月),可以用DB2的ADD_MONTHS和LAST_DAY函数来实现,避免手动计算月底日期:

SELECT distinct payment_date dated_daily 
FROM payment BB 
WHERE payment_date BETWEEN ADD_MONTHS(DATE('2018-04-01'), -1) 
                       AND LAST_DAY(ADD_MONTHS(DATE('2018-04-01'), -1))
  • ADD_MONTHS(DATE('2018-04-01'), -1)会把2018-04-01往前推一个月,得到2018-03-01
  • LAST_DAY函数会自动返回该月份的最后一天,也就是2018-03-31,不用你手动写31号,避免不同月份天数不同的问题

如果你的需求是基于当前日期动态取前一个月,还可以把固定日期换成CURRENT_DATE,比如:

SELECT distinct payment_date dated_daily 
FROM payment BB 
WHERE payment_date BETWEEN ADD_MONTHS(CURRENT_DATE, -1) 
                       AND LAST_DAY(ADD_MONTHS(CURRENT_DATE, -1))

内容的提问来源于stack exchange,提问作者Amin SCO

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:11:40