自己搞定select last_day(tt.d) from (select ADD_MONTHS(zz.s, rownum - 1) d from (select to_date('2010-01-01', 'yyyy-mm-dd') s, to_date('2010-10-01', 'yyyy-mm-dd') e from dual) zz, (select * from user_objects) where rownum <= MONTHS_BETWEEN(zz.e, zz.s) + 1) tt
--两个日期中每一天 select to_date('2010-01-01','yyyy-mm-dd')+level-1 from dual connect by level<=to_date('2010-10-01','yyyy-mm-dd')-to_date('2010-01-01','yyyy-mm-dd');
--楼主写的有点复杂,试试这个: select last_day(add_months(to_date('2010-01-01','yyyy-mm-dd'),level-1)) from dual connect by level<= to_number(to_char(to_date('2010-10-01','yyyy-mm-dd'),'mm'))-to_number(to_char(to_date('2010-01-01','yyyy-mm-dd'),'mm'))
from (select ADD_MONTHS(zz.s, rownum - 1) d
from (select to_date('2010-01-01', 'yyyy-mm-dd') s,
to_date('2010-10-01', 'yyyy-mm-dd') e
from dual) zz,
(select * from user_objects)
where rownum <= MONTHS_BETWEEN(zz.e, zz.s) + 1) tt
select to_date('2010-01-01','yyyy-mm-dd')+level-1
from dual
connect by level<=to_date('2010-10-01','yyyy-mm-dd')-to_date('2010-01-01','yyyy-mm-dd');
--楼主写的有点复杂,试试这个:
select last_day(add_months(to_date('2010-01-01','yyyy-mm-dd'),level-1))
from dual
connect by level<= to_number(to_char(to_date('2010-10-01','yyyy-mm-dd'),'mm'))-to_number(to_char(to_date('2010-01-01','yyyy-mm-dd'),'mm'))
SYSDATE-8
-----------
2010-9-30 1
SQL> select 1 from dual where trunc(sysdate-8+1,'mm')>trunc(sysdate-8,'mm');
1
----------
1
SQL> select 1 from dual where trunc(sysdate-7+1,'mm')>trunc(sysdate-7,'mm');
1
----------
SQL>