在BAT中,比如今天为20090302,那我想获取三个月前的日期,如1202,1203...0301,应该可以获取日期的字符串之类的,呵呵。

解决方案 »

  1.   


    --获取两时间月份差
    select (EXTRACT(year FROM to_date('2009-05-01','yyyy-mm-dd')) - EXTRACT(year FROM to_date('2008-04-30','yyyy-mm-dd'))) * 12 + 
           EXTRACT(month FROM to_date('2008-05-01','yyyy-mm-dd')) - EXTRACT(month FROM to_date('2008-04-30','yyyy-mm-dd')) months
    from dual;
    /*
    MONTHS
    ----------
            13
    1 row selected
    */select * from tb
    where (EXTRACT(year FROM to_date(getdate,'yyyy-mm-dd')) - EXTRACT(year FROM to_date(dt,'yyyy-mm-dd'))) * 12 + 
           EXTRACT(month FROM to_date(getdate,'yyyy-mm-dd')) - EXTRACT(month FROM to_date(dt,'yyyy-mm-dd')) months = 3
      

  2.   

    参考:
    http://jorkin.reallydo.com/article.asp?id=529
      

  3.   


    SQL> select add_months(sysdate, -3) from dual;ADD_MONTHS(SYSDATE,
    -------------------
    2008-12-02 12:07:40
      

  4.   

    各位,我不是说要获取某一个日期,也不是要比较两个时间的日期差,我是要获取当前日期的三个月前的所有日期,比如以下为获取当天日期
    @echo   off   
    set mmdd=%date:~5,2%%date:~8,2%
    set mm=%date:~5,2%
    我这里每天都有历史表,比如t_0101test,t_0102test,我就是把这些表给列出来,就是要把0101,0102之类的变量日期给获取出来,呵呵。
      

  5.   

    SQL>SQL> ed               
    Wrote file afiedt.buf   1  declare
      2      l_date date;
      3  begin           
      4      l_date := trunc(add_months(sysdate,-&month));
      5      while (l_date <= trunc(sysdate) )            
      6      loop                                         
      7        dbms_output.put_line(l_date);              
      8        l_date := l_date + 1;                      
      9      end loop;                                    
     10* end;                                             
    SQL> /                                                
    Enter value for month: 1                              
    old   4:     l_date := trunc(add_months(sysdate,-&month));
    new   4:     l_date := trunc(add_months(sysdate,-1));     
    2009-02-02 00:00:00                                       
    2009-02-03 00:00:00                                       
    2009-02-04 00:00:00
    2009-02-05 00:00:00
    2009-02-06 00:00:00
    2009-02-07 00:00:00
    2009-02-08 00:00:00
    2009-02-09 00:00:00
    2009-02-10 00:00:00
    2009-02-11 00:00:00
    2009-02-12 00:00:00
    2009-02-13 00:00:00
    2009-02-14 00:00:00
    2009-02-15 00:00:00
    2009-02-16 00:00:00
    2009-02-17 00:00:00
    2009-02-18 00:00:00
    2009-02-19 00:00:00
    2009-02-20 00:00:00
    2009-02-21 00:00:00
    2009-02-22 00:00:00
    2009-02-23 00:00:00
    2009-02-24 00:00:00
    2009-02-25 00:00:00
    2009-02-26 00:00:00
    2009-02-27 00:00:00
    2009-02-28 00:00:00
    2009-03-01 00:00:00
    2009-03-02 00:00:00PL/SQL procedure successfully completed.
    SQL>