oracle生成每週每月開始結束時間

declare
  startDate               date;
  endDate                 date;
  m_startDate             varchar2(50);
  m_endDate               varchar2(50);
  iteratorNum                 number;
begin 
  

    for iteratorNum in 14..35 loop
      
        select dateTime ,dateTime+6 into startDate, endDate  from  
        (  
          select dateTime, Rownum rn from   
          (  
            select trunc(sysdate, 'yyyy')+rownum-1 dateTime from dba_objects   
            where rownum <= (select add_months(trunc(sysdate, 'yyyy'), 12) - trunc(sysdate, 'yyyy') from dual)  
          ) b where lower(ltrim(rtrim(to_char(b.dateTime, 'day','NLS_DATE_LANGUAGE = AMERICAN'))))= 'monday'
        ) T
        where T.rn +1 = iteratorNum;
      
        dbms_output.put_line('第'||iteratorNum||'周,開始時間:'||startDate||'結束時間'||endDate);
        
   end loop;   
   
   for iteratorNum in 4..8 loop
        if iteratorNum = 4 then
         m_startDate := '2019-04';
         m_endDate := '2019-04';
       elsif iteratorNum = 5 then
         m_startDate := '2019-05';
         m_endDate := '2019-05';
       elsif iteratorNum = 6 then
         m_startDate := '2019-06';
         m_endDate := '2019-06';
       elsif iteratorNum = 7 then
         m_startDate := '2019-07';
         m_endDate := '2019-07';
       else 
         m_startDate := '2019-08';
         m_endDate := '2019-08';     
       end if;
       
       select to_date(m_startDate,'yyyy-MM'),
              last_day(to_date(m_endDate,'yyyy-MM'))
              into m_startDate, m_endDate 
       from dual;
       dbms_output.put_line('第'||iteratorNum||'月,開始時間:'||m_startDate||'結束時間'||m_endDate);
       
   end loop;  
end;  
  
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章