以当日SYSDATE为开始时间,本月最后一天为结束时间来演示:
SELECT trunc(SYSDATE)+rownum-1 day from dual connect by rownum <= trunc(LAST_DAY(SYSDATE)) - trunc(SYSDATE)+1
connect by:指定层级的父行于子行的关系,并进行对应的循环。
日期列表
SELECT TO_CHAR(TO_DATE(‘2008-05-12’, ‘yyyy-MM-dd’) + ROWNUM - 1, ‘yyyyMMdd’) as daylist
FROM DUAL
CONNECT BY ROWNUM <=
trunc(to_date(‘2008-08-08’, ‘yyyy-MM-dd’) -
to_date(‘2008-05-12’, ‘yyyy-MM-dd’)) + 1
获取月份列表:
SELECT TO_CHAR(ADD_MONTHS(TO_DATE(‘2008-05’, ‘yyyy-MM’), ROWNUM - 1),
‘yyyyMM’) as monthlist
FROM DUAL
CONNECT BY ROWNUM <=
months_between(to_date(‘22008-08’, ‘yyyy-MM’),
to_date(‘2008-05’, ‘yyyy-MM’)) + 1
获取年份列表:
SELECT TO_CHAR(ADD_MONTHS(TO_DATE(‘2008-08’, ‘yyyy-MM’), (ROWNUM - 1) * 12),
‘yyyy’) as yearlist
FROM DUAL
CONNECT BY ROWNUM <=
months_between(to_date(‘2022-02’, ‘yyyy-MM’),
to_date(‘2008-08’, ‘yyyy-MM’)) / 12 + 1