当另一列的时间戳小于当前时间的X小时数时,如何更新列

时间:2015-12-08 21:54:44

标签: sql-server-2008

我有一个名为Tracker的表,有多列但我真的只想将一列(状态)重置为0,如果另一列中的时间戳是当前时间减去10小时。

这是我的查询

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.

有人可以帮我解决这个问题吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

问题是CURRENT_TIMESTAMP返回的值是DATETIME。你需要做一些像

这样的事情
CAST(lastlogintime AS TIME) <= CAST(DATEADD(hh, -10, CURRENT_TIMESTAMP) AS TIME)