update ndxx set zwrq=to_date('2011-01-01','yyyy-mm-dd')  
更新日期的时候 我希望时间加一年 怎么写
就是我做年度结转的时候  我希望 2011-01-01   变成 2012-01-01  
这个sql 怎么写

解决方案 »

  1.   

    select add_months(sysdate,12) from dual;
      

  2.   

    Sys@ANTU-YG> Select Sysdate+365 From dual;
    SYSDATE+365
    -------------------
    2012-02-22 13:45:17已用时间:  00: 00: 00.06
    Sys@ANTU-YG>
      

  3.   

    select sysdate, add_months(sysdate,12) from dual;
      

  4.   

    select sysdate, add_months(sysdate,12) from dual;
      

  5.   

    有个牛逼的方法是我原创的 嘻嘻to_char((to_number(yourdate)/10000 + 1) + to_number(yourdate)%10000)
      

  6.   

    update ndxx set zwrq=add_months(to_date('2011-01-01','yyyy-mm-dd'),12)2楼的365天可不对 闰年呢
      

  7.   

    UPDATE NDXX SET ZWRQ = ADD_MONTHS(TO_DATE('2011-01-01', 'yyyy-mm-dd'), 12);
    这个吧
      

  8.   

    add_months可以实现,但是我们该想想为什么Oracle没有add_years的功能呢?貌似SQL SERVER是有直接加年的操作的!也许这就是Oracle要体现出与微软的不同吧!
      

  9.   

    --也可以这样
    select sysdate,
            sysdate + interval '1' year add_year,
            sysdate + interval '1' month add_month,
            sysdate + interval '1' day add_day,
            sysdate + interval '1' hour add_hour,
            sysdate + interval '1' minute add_minute,
            sysdate + interval '1' second add_second
    from dual
      

  10.   

    精简.
    如果要得到年数的直接add_months(begin_time,年数*12)
      

  11.   

    update ndxx set zwrq= (select  add_months(to_date('2011-01-01','yyyy-mm-dd'),12) from dual)
      

  12.   

    update ndxx set zwrq=to_date('2011-01-01','yyyy-mm-dd')+ interval '1' year;
      

  13.   

        select add_months(to_date('2011-02-28','yyyy-mm-dd'),12) from dual
    大家看看这个结果,好像不行。
      

  14.   

    select add_months(sysdate,12) from dual;
    select sysdate,
            sysdate + interval '1' year add_year,
            sysdate + interval '1' month add_month,
            sysdate + interval '1' day add_day,
            sysdate + interval '1' hour add_hour,
            sysdate + interval '1' minute add_minute,
            sysdate + interval '1' second add_second
    from dual;
    这样真的可以,学习了这些都是好方法呀收集了
      

  15.   

    sysdate + interval '1' year add_year,select add_months(sysdate,12) from dual;这两种方法是有区别的。第一种方法直接加年的方法。无脑
    第二种方法是经过运算的,能够避免一些不必要的意外。以2011-02-28为例:
    第一个方法的结果为 2012-02-28
    第二个方法的结果为 2012-02-29以2012-02-29为例:
    第一个方法的结果会出现错误。因为在2013年没有2月29号这一天
    第二个方法的结果为 2013-02-28
      

  16.   

    update a t set t.sj = add_months(t.sj,12) where t.id = '???'
      

  17.   

    加个decode 区分平年和闰年也行  不过麻烦 有ADD_MONTH现成的  就用
      

  18.   

    select  add_months(sysdate,12) as setdate from dual;
      

  19.   

    1楼就已经是正确答案了
    补interval