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'

解决方案 »

  1.   

    declare @tb table(cname varchar(10),ddate1 varchar(10),ddate2 varchar(10))
    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 行)
    */
      

  2.   

    update GCTYAJ
    set dh=left(dh, 5)+convert(varchar(10), stuff(dh, 1, 5, '')+1)
    where addtime between '2005-7-1' and '2005-7-20'也可以。