当前日期前推一个月(30天)
select to_char(sysdate-30 + rownum, 'YYYYMMDD') dates
from dual
connect by rownum<=30
order by dates
当前日期前推一年(12个月)
SELECT to_number(TO_CHAR(add_months(trunc(sysdate, 'MM'), -(ROWNUM - 1)), 'yyyyMM')) as month
FROM DUAL
CONNECT BY ROWNUM <=
(select months_between(trunc(sysdate, 'MM'), trunc(sysdate, 'yyyy')) + 1
from dual)