修改数据库里面的日期 在原来的基础上都加上3个月 类型是smalldatetime
update tt set t1=Cast((' '+Cast((Cast(Substring(Cast(t1 as  varchar),1,3) as int)+3) as varchar)
+substring(Cast(t1 as varchar),3,len(t1)-1))  as smalldatetime)
这样可以实现但是如果月份大于9月 10的话就报错 我知道可以写个判断来执行。但是太复杂了。
有没有更简单的函数来执行 谢谢各位大虾了!

解决方案 »

  1.   

    dateadd() 日期函数不可以嘛?
      

  2.   

    UPDATE TB SET DATETIME1=DATEADD(MM,3,DATETIME1) 
      

  3.   

    update tt set t1=dateadd(mm,3,t1) as t1
      

  4.   

    update tt set t1=convert(varchar,dateadd(mm,3,Cast(t1 as datetime)),120)
      

  5.   

    IF NOT OBJECT_ID('[tt]') IS NULL
    DROP TABLE [tt]
    GO
    CREATE TABLE TT(t1 varchar(20))
    INSERT INTO TT SELECT '2009-09-10' UNION ALL SELECT '2009-10-11'
    GOSELECT * FROM TT/*
    t1                   
    -------------------- 
    2009-09-10
    2009-10-11(所影响的行数为 2 行)
    */
    update tt set t1=convert(varchar,dateadd(mm,3,Cast(t1 as datetime)),120)SELECT * FROM TT
    /*
    t1                   
    -------------------- 
    2009-12-10 00:00:00
    2010-01-11 00:00:00
    */
      

  6.   

    update tt set t1=dateadd(mm,3,t1)