本帖最后由 wgj830823 于 2010-09-29 20:08:48 编辑

解决方案 »

  1.   

    自己搞定select  last_day(tt.d)      
      from (select ADD_MONTHS(zz.s, rownum - 1) d      
             from (select to_date('2010-01-01', 'yyyy-mm-dd') s,      
                          to_date('2010-10-01', 'yyyy-mm-dd') e      
                     from dual) zz,      
                   (select * from user_objects)      
           where rownum <= MONTHS_BETWEEN(zz.e, zz.s) + 1) tt 
      

  2.   

    --两个日期中每一天
    select to_date('2010-01-01','yyyy-mm-dd')+level-1
    from dual
    connect by level<=to_date('2010-10-01','yyyy-mm-dd')-to_date('2010-01-01','yyyy-mm-dd');
      

  3.   


    --楼主写的有点复杂,试试这个:
    select last_day(add_months(to_date('2010-01-01','yyyy-mm-dd'),level-1))
    from dual
    connect by level<= to_number(to_char(to_date('2010-10-01','yyyy-mm-dd'),'mm'))-to_number(to_char(to_date('2010-01-01','yyyy-mm-dd'),'mm'))
      

  4.   

    如果是对某个字段做判断是不是最后一天的话,用trunc(字段,'mi')=trunc(字段)就可以了.
      

  5.   

    呵呵,写错了,应该是trunc(字段+1,'mm')>trunc(字段,'mm')
      

  6.   

    SQL> select sysdate-8 from dual;
     
    SYSDATE-8
    -----------
    2010-9-30 1
     
    SQL> select 1 from dual where trunc(sysdate-8+1,'mm')>trunc(sysdate-8,'mm');
     
             1
    ----------
             1
     
    SQL> select 1 from dual where trunc(sysdate-7+1,'mm')>trunc(sysdate-7,'mm');
     
             1
    ----------
     
    SQL>