2015-12-08 45 views
1

我有一個名爲Tracker的表,但是我真的只想將一列(狀態)重置爲0如果另一列中的時間戳是當前時間減10小時。當另一列的時間戳小於X當前時間的小時數時,如何更新列

這是我的查詢

update Tracker 
set Status = '0' 
Where status <> '0' and lastlogintime <= dateadd(HH, -10,CURRENT_TIMESTAMP) 

時間戳爲自己是15:59和現在的實際時間是14:51。如果我運行此查詢,它會將我的狀態重置爲0,即使15:59比14:51 - 10小時更長。如果我將查詢更改爲lastlogintime >= dateadd(HH, -10,CURRENT_TIMESTAMP),則不會將狀態重置爲0.

有人可以幫我解決嗎? 謝謝。

+0

創建'更新trigger' – Ormoz

+0

我已經創建更新每次用戶登錄到應用程序的lastlogintime一個更新觸發器。由於許可證有限,我們試圖運行一個自動查詢,以在晚上10點每晚運行,以重置在中午之前登錄的所有會話。 – Smacky1302

回答

0

問題是由CURRENT_TIMESTAMP返回的值是DATETIME。你需要做的是這樣

CAST(lastlogintime AS TIME) <= CAST(DATEADD(hh, -10, CURRENT_TIMESTAMP) AS TIME) 
+0

太棒了,工作。我標記答案是有用的,但因爲我的代表點太低,它不會顯示:( – Smacky1302

+0

@ Smacky1302它不會讓你把它標記爲接受的答案? – SQLChao

+0

哎呦不要介意,將它標記爲接受。 – Smacky1302