日期:2014-05-17  浏览次数:20975 次

求每个月第几周是那几天的SQL语句写法
如,11月份
第1周是2012-11-01到2012-11-04
第2周是2012-11-05到2012-11-11
第3周是2012-11-12到2012-11-18
第4周是2012-11-19到2012-11-25
第5周是2012-11-26到2012-11-30
.....
不知道怎样写可以实现,求大神们帮助
------解决方案--------------------

SELECT row_number() over(ORDER BY m.groupid DESC) rn,
       MIN(m.t_date) start_date,
       MAX(m.t_date) end_date
  FROM (
        SELECT '201211' 
------解决方案--------------------
 to_char(LEVEL,'fm09') t_date,
               to_char(to_date('201211' 
------解决方案--------------------
 to_char(LEVEL,'fm09'),'yyyymmdd') - 1, 'd') - 1 - LEVEL groupid
          FROM dual
        CONNECT BY LEVEL <= LAST_DAY(TO_DATE('201211', 'yymm')) - TO_DATE('201211', 'yymm') + 1
       ) m
GROUP BY m.groupid
ORDER BY m.groupid DESC

        RN START_DATE END_DATE
---------- ---------- ---------
         1 20121101   20121104
         2 20121105   20121111
         3 20121112   20121118
         4 20121119   20121125
         5 20121126   20121130

'201211'是传递的参数