declare @count int declare @i int set @i = 1 set @count = (select max(id) from [dbo].[numas_employee_certificate]) while @i<=@count begin declare @valid_date datetime set @valid_date = (select certificate_date from [dbo].[numas_employee_certificate] where id = @i) while @valid_date < getdate() begin set @valid_date = (select dateadd(year,+5,@valid_date)) end update [dbo].[numas_employee_certificate] set valid_date = @valid_date where id = @i set @i = @i+1 end
定义了一个 @count 等于该表id最大值,外面一个循环是保证对该表每一列都进行操作,一个简单的循环,set是赋值操作。
里面定义了一个时间变量,set是赋值操作,定义该变量等于另一列的值,getdate()是sqlserver里面获取当前时间的函数。
然后是一个while循环,后面一个select dateadd(year,+5,@valid_date)是将该变量的值加上五年,再执行更新操作。