sqlserver 利用一列的值去更新另外一列,判断是否大于当前时间,不是就加上五年,再判断

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)是将该变量的值加上五年,再执行更新操作。

猜你喜欢

转载自blog.csdn.net/qq_28364999/article/details/73122361