在SQL中的每一行添加1天

时间:2014-10-03 14:34:31

标签: sql sql-server tsql

我有一个测试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

1 个答案:

答案 0 :(得分:3)

您的查询过于复杂。您只需要一个UPDATE

UPDATE Call
  SET Timestamp = DATEADD(day,1,Timestamp)