2014-10-03 44 views
2

我有一個測試SQL Server數據庫,其中包含有關呼叫中心收到的呼叫的數據。每個調用都有一個時間戳,在我的測試數據庫中,我希望將一天添加到每行的時間戳字段中。我希望每天都使用預定的工作來完成這項工作,以使數據繼續看起來像從應用程序的角度來看是新鮮的。到目前爲止,我的工作似乎表現不佳,因爲這個過程不斷處於暫停狀態。我絕對不是SQL大師,我的感覺是,可能有更好的方法來做到這一點。有人可以幫我嗎?向SQL中的每一行添加1天

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

表中有多少行? – 2014-10-03 14:44:35

+5

爲什麼不簡單執行** update [dbo]。[調用]爲所有行設置TimeStamp = DATEADD(DAY,1,TimeStamp)** – Max 2014-10-03 14:46:17

+0

大約有40,000行。 – 2014-10-03 14:46:57

回答

3

您的查詢過於複雜。只需要一個UPDATE即可。

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

是的,那是有效的。告訴你我不是SQL大師。 Noob將是一個更好的術語。謝謝,所有。 – 2014-10-03 14:52:01