oracle 获取一个月的周
select min(dt) monday, max(dt) sunday from (select level rn, trunc(to_date('2016-6', 'YYYY-MM'), 'mm') + level - 1 dt, max(decode(to_char(trunc(to_date('2016-6', 'YYYY-MM'), 'mm') + level - 1, 'd'), 2, level, 0)) over(order by level) flag from dual connect by level <= last_day(trunc(to_date('2016-6', 'YYYY-MM'))) - trunc(to_date('2016-6', 'YYYY-MM'), 'mm') + 1) group by flag order by min(rn);