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

Sql server 2008 当另一列的时间戳小于当前时间的X小时数时,如何更新该列,sql-server-2008,Sql Server 2008,我有一个名为Tracker的表,它有多个列,但如果另一列中的时间戳是当前时间减去10小时,我真的只想将一列(状态)重置回0 这是我的问题 update Tracker set Status = '0' Where status <> '0' and lastlogintime <= dateadd(HH, -10,CURRENT_TIMESTAMP) 更新跟踪器 设置状态='0' 如果状态为“0”且lastlogintime=dateadd(HH,-10,当前时间戳),则不会

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

这是我的问题

update Tracker
set Status = '0'
Where status <> '0' and lastlogintime <= dateadd(HH, -10,CURRENT_TIMESTAMP)
更新跟踪器
设置状态='0'
如果状态为“0”且lastlogintime=dateadd(HH,-10,当前时间戳)
,则不会将状态重置回0

有人能帮我一下吗?
谢谢。

问题是
当前时间戳返回的值是
日期时间
。你需要像这样做

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

CAST(lastlogentime AS TIME)问题是
CURRENT\u TIMESTAMP
返回的值是
DATETIME
。你需要像这样做

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

CAST(lastlogentime AS TIME)创建一个
update触发器
我创建了一个update触发器,用于在每次有人登录应用程序时更新lastlogentime。由于许可证有限,我们正在尝试运行一个自动查询,以便每晚晚上10点运行,以重置中午之前登录的所有会话。创建一个
更新触发器
我创建了一个更新触发器,以便在每次有人登录应用程序时更新lastlogintime。由于许可证有限,我们正在尝试运行一个自动查询,每天晚上10点运行,以重置中午之前登录的所有会话。太棒了,成功了。我将答案标记为有用,但因为我的代表分数太低,所以不会显示:(太棒了,这很有效。我将答案标记为有用,但因为我的代表分数太低,所以不会显示:(