请问日期为2007-11-10 我要是把这个日期加上或者减少1000年语句应该怎么写?
   
    加上1000年为3007-11-10 减少1000年为1007-11-10

解决方案 »

  1.   


    select dateadd(yy,-100,getdate())
      

  2.   

      
      你如果写100年的话是可以的 但是是1000年就报错
    向列 'datetime' 添加值时导致溢出。
      

  3.   

    declare @d varchar(10)
    set @d='2007-11-10'
    declare @add int
    set @add=-1000set @d= ltrim(year(@d)+@add)+right(@d,len(@d)-4)
    select @d
      

  4.   

    declare @d varchar(10)
    set @d='2007-11-10'
    declare @add int
    set @add=-1000set @d= ltrim(year(@d)+@add)+right(@d,len(@d)-4)
    select @d
      

  5.   

    declare @d varchar(100)
    set @d='1007-11-10 13:32:00.003'
    declare @add int
    set @add=-1000--不用日期函数处理,以免溢出
    set @d= ltrim(left(@d,charindex('-',@d)-1)+@add)+right(@d,len(@d)-4)select @d
      

  6.   

        
        比如说 在数据库里日期字段里有1007开始的日期我就全部替换成2007 这个应该怎么写?
       
        日期字段为workdate    update table  
    set workdate=CONVERT(char(10),dateadd(yy,1000,workdate),120) from table where workdate like  '1007%'
      

  7.   

    update [table] 
    set workdate=stuff(workdate,1,4,'2007') where workdate like '1007%'
      

  8.   

    有,不外left,right,substring组合,懒得写,自己参照联机丛书
      

  9.   

    update T
    set [date]=dateadd(yy,1000,[date])update T
    set [date]=dateadd(yy,-1000,[date])如果是减时就有问题了
    --数据库默认最小时间,会导致溢出
    1900-01-01 00:00:00.000
      

  10.   

    select dateadd(yy,1000,getdate())/*
                                                           
    ------------------------------------------------------ 
    3007-11-10 18:52:56.050*/-1000 是不行的,数据库最小只到1900
      

  11.   


    是啊。数据库中日期类型的值不能小于1900-01-01的
    加1000年
    select dateadd(yy,1000,'2007-11-10')
    减1000年
    select replace('2007-11-10',datepart(yy,'2007-11-10'),datepart(yy,'2007-11-10')-1000)
      

  12.   

    --谁说日期类型最小是1900年declare @T table (Test datetime)
    insert @T select '1753-01-01'
    select * from @T