比如说,我选了年、月,然后选这个月的第2周,怎么得到这个月的第2周,是哪天至哪天呢?

解决方案 »

  1.   

    select next_day(trunc(sysdate,'mm'),'星期日'),next_day(next_day(trunc(sysdate,'mm'),'星期日'),'星期六') from dual
      

  2.   

    1楼已经解决了,如果你要第一个周一到周日,更改以下就可以了
    select next_day(trunc(sysdate,'mm'),'星期一'),next_day(next_day(trunc(sysdate,'mm'),'星期一'),'星期日') from dual
      

  3.   


    SELECT *
      FROM (SELECT (SYSDATE - TO_CHAR(SYSDATE, 'dd') + ROWNUM) DATETIME
              FROM DUAL
            CONNECT BY ROWNUM <= 31) TMP
     WHERE TO_CHAR(TMP.DATETIME, 'W') = 1;
    SELECT *
      FROM (SELECT (SYSDATE - TO_CHAR(SYSDATE, 'dd') + ROWNUM) DATETIME
              FROM DUAL
            CONNECT BY ROWNUM <= 31) TMP
     WHERE TO_CHAR(TMP.DATETIME, 'W') = 2;
      

  4.   

    第二周:SELECT *
      FROM (SELECT (SYSDATE - TO_CHAR(SYSDATE, 'dd') + ROWNUM) DATETIME
              FROM DUAL
            CONNECT BY ROWNUM <= 31) TMP
     WHERE TO_CHAR(TMP.DATETIME, 'W') = 2;第三周:SELECT *
      FROM (SELECT (SYSDATE - TO_CHAR(SYSDATE, 'dd') + ROWNUM) DATETIME
              FROM DUAL
            CONNECT BY ROWNUM <= 31) TMP
     WHERE TO_CHAR(TMP.DATETIME, 'W') = 3;
      

  5.   

    create or replace procedure getSecWeek
    (
        inputYear  in varchar2,
        inputMonth in varchar2,
        beginDate  out date ,
        endDate    out date
    )
    is
        tempDate varchar2(10);
        inputDate varchar2(50);
    begin
         tempDate :='01';
         inputDate :=inputYear ||'-'||inputMonth||'-'||tempDate;
         select next_day(next_day(to_date(inputDate,'yyyy-mm-dd'),'星期一'),'星期一') into beginDate from dual;
         select next_day(next_day(next_day(to_date(inputDate,'yyyy-mm-dd'),'星期一'),'星期日'),'星期日') into endDate from dual;
         dbms_output.put_line('第二周开始' || '   ' ||'结束日期');   
         dbms_output.put_line(beginDate || '   ' || endDate);                                                                             
    end;
      

  6.   

    select next_day(trunc(sysdate),'星期五') from dual;