如何在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-01LAST_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
相关产品推荐
相关产品推荐

