如何更新一定时间段内的数据

有一个表,2个字段,dateandtime,val,每秒一个记录,已经记录了很长一段时间的记录,现在要我给定三个时间点,再给三个数值,如程序所写,要求在前两个时间点内的所有记录,VAL全部更新,内容为第一个数值递减,在到第二个时间点时刚好等于第二个数值;在后两个时间点内,val从第二个数值开始递增,直到第三个时间点刚好等于第三个数值。在X-Y坐标轴中,所有的数值连起来刚好一个V字。下面是我写的程序,为什么实现不了,执行的时候只有两行被影响。--首先,你在往下操作前,请先备份数据库,没有备份的话请马上备份--以下几行都是定义数据,把时间段、液位、标签填写准确,然后执行就可以了declare @开始滗水时间 datetime set @开始滗水时间='2011-6-8 12:00:00' declare @开始进水时间 datetime set @开始进水时间='2011-6-8 13:00:00' declare @开始曝气时间 datetime set @开始曝气时间='2011-6-8 14:00:00' declare @开始滗水液位 float set @开始滗水液位='20000' declare @开始进水液位 float set @开始进水液位='10000' declare @开始曝气液位 float set @开始曝气液位='28000' declare @标签值 int set @标签值='1' -------------这个一定要记得改哦,不然错的就大啦declare @递减值 floatdeclare @递增值 floatdeclare @递减次数 int declare @递增次数 intdeclare @测试   int set @测试=0--数据变化计算select  @递减值=(@开始滗水液位-@开始进水液位)/datediff(S,@开始滗水时间,@开始进水时间)select  @递增值=(@开始曝气液位-@开始进水液位)/datediff(S,@开始进水时间,@开始曝气时间)select datediff(S,@开始滗水时间,@开始进水时间)select datediff(S,@开始进水时间,@开始曝气时间)--循环程序if (@测试<@递减次数)begin update AFloatTable set val=@开始滗水液位-@递减值 where dateandtime=@开始滗水时间 and tagindex=@标签值 set @测试=@测试+1 set @开始滗水液位=@开始滗水液位-@递减值 set @开始滗水时间=dateadd(s,1,@开始滗水时间)end

作者: hsjiang   发布时间: 2011-06-22

declare @开始滗水时间 datetime set @开始滗水时间='2011-6-8 12:00:00'
declare @开始进水时间 datetime set @开始进水时间='2011-6-8 13:00:00'
declare @开始曝气时间 datetime set @开始曝气时间='2011-6-8 14:00:00'
declare @开始滗水液位 float set @开始滗水液位='20000'
declare @开始进水液位 float set @开始进水液位='10000'
declare @开始曝气液位 float set @开始曝气液位='28000'
declare @标签值 int set @标签值='1' -------------这个一定要记得改哦,不然错的就大啦declare @递减值 float
declare @递增值 float
declare @递减次数 int
declare @递增次数 int
declare @测试   int set @测试=0--数据变化计算
select  @递减值=(@开始滗水液位-@开始进水液位)/datediff(S,@开始滗水时间,@开始进水时间)
select  @递增值=(@开始曝气液位-@开始进水液位)/datediff(S,@开始进水时间,@开始曝气时间)
select datediff(S,@开始滗水时间,@开始进水时间)
select datediff(S,@开始进水时间,@开始曝气时间)
--循环程序
if (@测试<@递减次数)
begin update AFloatTable set val=@开始滗水液位-@递减值
where dateandtime=@开始滗水时间 and tagindex=@标签值 set @测试=@测试+1 set @开始滗水液位=@开始滗水液位-@递减值 set @开始滗水时间=dateadd(s,1,@开始滗水时间)
end


上面的太乱了,整理下再发

作者: hsjiang   发布时间: 2011-06-22