SQL 更新语句Update 效率问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 13:20:27
现在的数据库里面有记录,记录中其中一个字段为时间
如:2008-7-7 10:10:00 这样的时间有很多
现在我想一条语句把所有记录中 其中时间为2007年的记录更改为 2008年,注意只更改年份,其它的月,日,时分秒,都不变;;

请写出一条语句来现实;;
update log set [time] = '#2008-7-7 1:1;1#' where [time]>'' 这样类似的语句

或者有什么其它更好的办法没有

因为如果先把记录的时间保存起来,再更改时间,再更新回去,我觉得太浪费时间了,联效率,当记录多的时候可能出毛病
忘了说一句,需要的是替换功能
也就是我上面的2007 和 2008 是随机的,不是简单的加减就可以解决的,因为我不知道要替换的是大不审小,最好的就替换了,

--这样就是替换的了。
--@UPDATE_YEARNEW 参数为要变成的新日期年份
--@UPDATE_YEAROLD 参数为旧日期年份

DECLARE @UPDATE_YEARNEW AS INT,@UPDATE_YEAROLD AS INT
SET @UPDATE_YEARNEW=2008 --设置要更改的新日期
SET @UPDATE_YEAROLD=2007 --设置要更改的旧年份
UPDATE LOG SET TIME=DATEADD(YEAY@UPDATE_YEARNEW-@UPDATE_YEAROLD,TIME) WHERE YEAR(TIME)=@UPDATE_YEAR

UPDATE [表名] SET [时间字段]=DATEADD(YEAR,1,[时间字段])
WHERE DATEPART(YEAR,[时间字段])=2007

间思是将表中年份为2007的改为2008年的
也就是将年份改为2008,其它不变.
用于你的语句是:

update log set [time] = dateadd(year,1,[time])
where datepart(year,[time])=2007

Update log
Set [time] = Dateadd(yyyy,1,[time])
where Year([time])= '2007'

update log set [time] = dateadd(y,1,[time]) where year(time)='2007'

用的ORACLE的话
update log
set time = ADD_MONTHS(time,12)
where time >= 2007/1/1
and time < 2008/1/1

楼主意思就是说只改年份,也就是前面的四个数字吧.最简单的写法:
update log set left('time',4)='