我想要得到实际月份,月份-1,月份-2。和当前月份但少1年
例如,我在my where中这样做:
where extract(year from date) = 2021 or
extract(month from date) = 06
orextract(month from date) = 07
orextract(month from date) = 08
or (extract(year from date) = 2020 and
and extract(month from date) = 08)
但是我想知道如何自动更改,这样我就不需要每个月都自己更改了。
感谢所以-似乎您希望在where
子句中按日期过滤行。(当然,"日期"。是保留关键字,因此您的列不能被称为"日期";我假设它被称为date_
,并带有下划线。)
可以这样做:
where date_ >= add_months(trunc(sysdate, 'mm'), -14)
and
date_ < add_months(trunc(sysdate, 'mm'), -11)
trunc(sysdate, 'mm')
将当前日期截断到月初。Add -14个月从2021年8月1日回调到2020年6月1日(提前14个月)。在2020年9月1日之前增加11个月的变动;您需要的数据严格在2020年9月1日之前。
您可以将日期筛选为:
- 下个月初前及本月月初前两个月或两个月后;或
- 11个月前的月初之前和等于或等于12个月前的月初之后。
如果您在2021年8月运行,那么您将获得所有日期:2021年6月,7月和8月以及2020年8月。
:
WHERE ( date_column < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 1)
AND date_column >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -2) )
OR ( date_column < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -11)
AND date_column >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -12) )