日期:2014-05-17 浏览次数:20878 次
create table t1 (b_date date,e_date date); insert into t1 values (date'2011-06-01',date'2011-12-01'); insert into t1 values (date'2012-03-01',date'2012-06-01'); commit; select distinct to_char(add_months(b_date,level-1),'yyyy-mm') d from t1 connect by level< trunc(months_between(e_date,b_date),0)+2 order by d D ------------------------- 1 2011-06 2 2011-07 3 2011-08 4 2011-09 5 2011-10 6 2011-11 7 2011-12 8 2012-03 9 2012-04 10 2012-05 11 2012-06
------解决方案--------------------
--取指定时间段内每一天
SELECT to_date('2011-10-10' , 'YYYY-MM-DD') + ROWNUM - 1 service_date FROM dual
CONNECT BY ROWNUM <= (to_date('2011-10-28' , 'YYYY-MM-DD') - to_date('2011-10-10' , 'YYYY-MM-DD') + 1);
SERVICE_DATE
-------------------------
2011-10-10 00:00:00
2011-10-11 00:00:00
2011-10-12 00:00:00
2011-10-13 00:00:00
2011-10-14 00:00:00
2011-10-15 00:00:00
2011-10-16 00:00:00
2011-10-17 00:00:00
2011-10-18 00:00:00
2011-10-19 00:00:00
2011-10-20 00:00:00
2011-10-21 00:00:00
2011-10-22 00:00:00
2011-10-23 00:00:00
2011-10-24 00:00:00
2011-10-25 00:00:00
2011-10-26 00:00:00
2011-10-27 00:00:00
2011-10-28 00:00:00