查询某一年没个月的第一天和最后一天,假设是2008年

解决方案 »

  1.   

    select to_date('2008-'||rownum||'-01','yyyy-mm-dd'),add_months(to_date('2008-'||rownum||'-01','yyyy-mm-dd'),1)-1
    from '一个记录数超过12的表'
      

  2.   

    TRY IT ..
    SQL> SELECT TO_DATE('2008'||LPAD(RN,2,'0')||'01','YYYY-MM-DD') "FIRST_DAY",
      2         LAST_DAY(TO_DATE('2008'||LPAD(RN,2,'0')||'01','YYYY-MM-DD')) "LAST_DAY"
      3    FROM DUAL,
      4         (
      5          SELECT ROWNUM RN
      6            FROM DUAL
      7         CONNECT BY ROWNUM <= 12
      8         )OB
      9        ;FIRST_DAY   LAST_DAY
    ----------- -----------
    1/1/2008    1/31/2008
    2/1/2008    2/29/2008
    3/1/2008    3/31/2008
    4/1/2008    4/30/2008
    5/1/2008    5/31/2008
    6/1/2008    6/30/2008
    7/1/2008    7/31/2008
    8/1/2008    8/31/2008
    9/1/2008    9/30/2008
    10/1/2008   10/31/2008
    11/1/2008   11/30/2008
    12/1/2008   12/31/200812 rows selectedSQL> 
      

  3.   

    SELECT trunc(sysdate,'mm'),last_day(sysdate) from dual;设置一个循环就可以了add_mouths
      

  4.   

    上月一号
    select add_months(trunc(sysdate,'mm'),-1) from dual 
    上月最后一天select trunc(sysdate,'mm')-1 from dual 
      

  5.   

    SELECT TRUNC(TO_DATE('2008' || LPAD(RN, 2, '0') || '01', 'YYYY-MM-DD'),
                 'mm') "FIRST_DAY",
           LAST_DAY(TO_DATE('2008' || LPAD(RN, 2, '0') || '01', 'YYYY-MM-DD')) "LAST_DAY"
      FROM DUAL, (SELECT ROWNUM RN FROM DUAL CONNECT BY ROWNUM <= 12) OB;
    查询结果:
        FIRST_DAY LAST_DAY
    1 2008-1-1 2008-1-31
    2 2008-2-1 2008-2-29
    3 2008-3-1 2008-3-31
    4 2008-4-1 2008-4-30
    5 2008-5-1 2008-5-31
    6 2008-6-1 2008-6-30
    7 2008-7-1 2008-7-31
    8 2008-8-1 2008-8-31
    9 2008-9-1 2008-9-30
    10 2008-10-1 2008-10-31
    11 2008-11-1 2008-11-30
    12 2008-12-1 2008-12-31