如何通过sql语句得到每周一、每周五的日期?如:
...............
2009-08-31至2009-09-04
2009-09-07至2009-09-11
...............

解决方案 »

  1.   

    select * from tt
      where to_char(date1,'fmday') not in ('星期六','星期日')
      

  2.   

    select to_char(dt,'YYYY-MM_DD')||'至'||to_char(dt+4,'YYYY-MM_DD') from
    (select date'2009-1-1'+level-1 dt from dual connect by level<=date'2009-1-1'-date'2008-1-1')
    where to_char(dt,'D')=2 and rownum<=3;TO_CHAR(DT,'YYYY-MM_DD
    ----------------------
    2009-01_05至2009-01_09
    2009-01_12至2009-01_16
    2009-01_19至2009-01_23
      

  3.   

    Oracle10g,用sqlplusSQL>ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD';
    SQL>ALTER SESSION SET NLS_LANG=AMERICAN;SELECT to_char(mydate)||'至'||to_char(mydate+4)
     FROM (
             SELECT TRUNC(SYSDATE, 'YEAR') + ROWNUM - 1 mydate
               FROM dual
             CONNECT BY ROWNUM < 366
          )
     WHERE TO_CHAR(mydate,'D')=2
      

  4.   

    SELECT to_char(mydate)||'至'||to_char(mydate+4)
     FROM (
             SELECT TRUNC(SYSDATE, 'YEAR') + ROWNUM - 1 mydate
               FROM dual
             CONNECT BY ROWNUM < 366
          )
     WHERE TO_CHAR(mydate,'D')=2TO_CHAR(MYDATE)||'至'||TO_CHA
    -----------------------------
    26-10
    02-11
    09-11
    16-11
    23-11
    30-11
    07-12
    14-12
    21-12
    28-12
    52 rows selected.