1、要求循环提出 到当前月的每个月的天数
例如:
月份       天数
2009年1月  30
2009年2月  29



2、任意时间段的天数 
例如:2009年01月20日-2009年03月10   xx天 (格式无所谓只要嫩实现!)

解决方案 »

  1.   

     你好好研究下last_day函数 就知道了
      

  2.   

    SELECT to_date('200902','yyyymm')-to_date('200901','yyyymm') FROM dual;得到1月份天数
    SELECT to_date('20090310','yyyymmdd')-to_date('20090120','yyyymmdd') FROM dual;得到相差天数
      

  3.   

    SELECT to_date('2009'||rpad('0',2,LEVEL+1),'yyyymm')-to_date('2009'||rpad('0',2,LEVEL),'yyyymm'),LEVEL FROM dual CONNECT BY LEVEL < to_char(SYSDATE,'mm')+1;(第一题)
      

  4.   

    1、要求循环提出 到当前月的每个月的天数 
    SQL> select to_char(add_months(trunc(sysdate, 'yyyy'), rownum-1),'yyyy-mm') mont
    h, add_months(trunc(sysdate, 'yyyy'), rownum)-add_months(trunc(sysdate, 'yyyy'),
     rownum-1) days from dual connect by rownum <=12;MONTH         DAYS
    ------- ----------
    2009-01         31
    2009-02         28
    2009-03         31
    2009-04         30
    2009-05         31
    2009-06         30
    2009-07         31
    2009-08         31
    2009-09         30
    2009-10         31
    2009-11         30MONTH         DAYS
    ------- ----------
    2009-12         31已选择12行。
      

  5.   


    日期直接相减就是天数做第一题就是用的该方法
    add_months(trunc(sysdate, 'yyyy'), rownum) - add_months(trunc(sysdate, 'yyyy'), rownum-1)这里就是下一个月的第一天减去上个月的第一天,也就是上月的总天数了。
      

  6.   


    1:select to_char(last_day(日期字段),'DD') from dual
    2 select 日期1-日期2 from dual  其中日期1,日期2 是日期类型,若是字符类型,要用to_date()函数转换一下。