update GCTYAJ
set dh=left(dh,5)+convert(varchar,(convert(int,substring(dh,6,len(dh)-5))+1))
where adddttm between '2005-7-1' and '2005-7-20'
set dh=left(dh,5)+convert(varchar,(convert(int,substring(dh,6,len(dh)-5))+1))
where adddttm between '2005-7-1' and '2005-7-20'
insert @tb
select 'a','2005-05-01','2005-05-30' union
select 'b','2005-06-01','2005-07-30' union
select 'c','2005-04-01','2005-07-30'select * from @tb--创建测试环境
create table GCTYAJ(dh varchar(20),addtime datetime)
insert GCTYAJ
select 'I1-1-234','2005-7-2' union
select 'I1-1-235','2005-7-2' union
select 'I1-1-999','2005-7-2' --测试
update GCTYAJ
set dh=left(dh,5)+convert(varchar,(convert(int,substring(dh,6,len(dh)-5))+1))
where addtime between '2005-7-1' and '2005-7-20'--查看
select * from GCTYAJ--删除测试环境
drop table GCTYAJ--结果
/*
dh addtime
-------------------- ----------------------------
I1-1-235 2005-07-02 00:00:00.000
I1-1-236 2005-07-02 00:00:00.000
I1-1-1000 2005-07-02 00:00:00.000(所影响的行数为 3 行)
*/
set dh=left(dh, 5)+convert(varchar(10), stuff(dh, 1, 5, '')+1)
where addtime between '2005-7-1' and '2005-7-20'也可以。