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
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
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
比如说 在数据库里日期字段里有1007开始的日期我就全部替换成2007 这个应该怎么写?
日期字段为workdate update table set workdate=CONVERT(char(10),dateadd(yy,1000,workdate),120) from table where workdate like '1007%'
update [table] set workdate=stuff(workdate,1,4,'2007') where workdate like '1007%'
有,不外left,right,substring组合,懒得写,自己参照联机丛书
update T set [date]=dateadd(yy,1000,[date])update T set [date]=dateadd(yy,-1000,[date])如果是减时就有问题了 --数据库默认最小时间,会导致溢出 1900-01-01 00:00:00.000
select dateadd(yy,-100,getdate())
你如果写100年的话是可以的 但是是1000年就报错
向列 'datetime' 添加值时导致溢出。
set @d='2007-11-10'
declare @add int
set @add=-1000set @d= ltrim(year(@d)+@add)+right(@d,len(@d)-4)
select @d
set @d='2007-11-10'
declare @add int
set @add=-1000set @d= ltrim(year(@d)+@add)+right(@d,len(@d)-4)
select @d
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
比如说 在数据库里日期字段里有1007开始的日期我就全部替换成2007 这个应该怎么写?
日期字段为workdate update table
set workdate=CONVERT(char(10),dateadd(yy,1000,workdate),120) from table where workdate like '1007%'
set workdate=stuff(workdate,1,4,'2007') where workdate like '1007%'
set [date]=dateadd(yy,1000,[date])update T
set [date]=dateadd(yy,-1000,[date])如果是减时就有问题了
--数据库默认最小时间,会导致溢出
1900-01-01 00:00:00.000
------------------------------------------------------
3007-11-10 18:52:56.050*/-1000 是不行的,数据库最小只到1900
是啊。数据库中日期类型的值不能小于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)
insert @T select '1753-01-01'
select * from @T