我有一个测试SQL Server数据库,其中包含有关呼叫中心接收的呼叫的数据。每个调用都有一个时间戳,在我的测试数据库中,我想在每行的timestamp字段中添加一天。我希望每天使用预定的工作执行此操作,以便从我们的应用程序的角度来看,数据看起来更新鲜。到目前为止,我所拥有的表现并不好,因为这个过程不断进入暂停状态。我绝对不是一个SQL大师,我的感觉是可能有更好的方法来做到这一点。有人可以帮助我吗?
BEGIN TRANSACTION [CallMover]
declare @call_id int
declare @call_time DateTime
BEGIN TRY
select @call_id = MIN (ID) from Call
while @call_id is not null
begin
select @call_time = TimeStamp from Call where ID = @call_id
update [dbo].[Call] set TimeStamp = DATEADD(DAY, 1, @call_time)
select @call_id = MIN (ID) from Call where ID > @call_id
end
COMMIT TRANSACTION [CallMover]
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION [CallMover]
END CATCH
GO
答案 0 :(得分:3)
您的查询过于复杂。您只需要一个UPDATE
。
UPDATE Call
SET Timestamp = DATEADD(day,1,Timestamp)