得到上一周一周的日期

解决方案 »

  1.   

    SQL>--星期日为周内第一天
    SQL> SELECT trunc(SYSDATE, 'd')+level-8 FROM dual CONNECT BY LEVEL <= 7;
     
    TRUNC(SYSDATE,'D')+LEVEL-8
    --------------------------
    2011-5-15
    2011-5-16
    2011-5-17
    2011-5-18
    2011-5-19
    2011-5-20
    2011-5-21
     
    7 rows selected
     
    SQL>----星期一为周内第一天
    SQL> SELECT trunc(SYSDATE, 'd')+level-7 FROM dual CONNECT BY LEVEL <= 7;
     
    TRUNC(SYSDATE,'D')+LEVEL-7
    --------------------------
    2011-5-16
    2011-5-17
    2011-5-18
    2011-5-19
    2011-5-20
    2011-5-21
    2011-5-22
     
    7 rows selected
     
    SQL> 
      

  2.   


    --一般是以周日为第一天
    SQL> select trunc(sysdate,'w') -1 + level from dual connect by level <=7;TRUNC(SYSD
    ----------
    2011-05-22
    2011-05-23
    2011-05-24
    2011-05-25
    2011-05-26
    2011-05-27
    2011-05-287 rows selected.
    --如果以周一为第一天的话:
    SQL> select trunc(sysdate,'w')+level from dual connect by level <=7;TRUNC(SYSD
    ----------
    2011-05-23
    2011-05-24
    2011-05-25
    2011-05-26
    2011-05-27
    2011-05-28
    2011-05-297 rows selected.
      

  3.   


    --上面是得到这周的
    --下面是得到上一周的所有日期
    --以周日为第一天
    SQL> select trunc(sysdate,'w') -8 + level from dual connect by level <=7;TRUNC(SYSD
    ----------
    2011-05-15
    2011-05-16
    2011-05-17
    2011-05-18
    2011-05-19
    2011-05-20
    2011-05-217 rows selected.
    --以周一为第一天
    SQL> select trunc(sysdate,'w')-7 + level from dual connect by level <=7;TRUNC(SYSD
    ----------
    2011-05-16
    2011-05-17
    2011-05-18
    2011-05-19
    2011-05-20
    2011-05-21
    2011-05-227 rows selected.
     oracle trunc for dates