例如:2011-5-13
用sql如何查出前推1年即2010-5-13哪位兄台知道。

解决方案 »

  1.   

    SELECT add_months(to_date('2011-05-13','yyyy-mm-dd'),-12) from dual;
      

  2.   

    想用DATEADD
    可是在toad里select DATEADD(YEAR,-1,sysdate) from dual提示
     "DATEADD": invalid identifier什么情况
      

  3.   

    oracle 里没DATEADD函数,只有add_months(), 1楼已经给出答案了
      

  4.   

    oracle中没dataadd函数,使用add_months
      

  5.   


    --方法一:用add_months()函数
    SQL> select add_months(to_date('2011-05-13','yyyy-mm-dd'),-12) dt from dual;
    DT
    -----------
    2010-05-13
    --方法二:使用numtoyminterval()函数
    SQL> select to_date('2011-05-13','yyyy-mm-dd') + numtoyminterval(-12,'month') dt from dual;
    DT
    -----------
    2010-05-13SQL> select to_date('2011-05-13','yyyy-mm-dd') + numtoyminterval(-1,'year') dt from dual;
    DT
    -----------
    2010-05-13
      

  6.   

    SELECT DATE'2011-05-13' - INTERVAL '1' YEAR FROM dual;