Sql 如何根据当前时间和列时间的差异更新表
我有一个名为Sql 如何根据当前时间和列时间的差异更新表,sql,sql-server,Sql,Sql Server,我有一个名为node\u status的表,它有三列: id(int) 状态(位) modifiedtime(smalldatetime) 我想对它运行一个查询,如果表中的任何一行包含一个modifiedtime值,该值比当前时间早5分钟,则status列设置为0(false) 有人能告诉我怎么做吗?(使用SQL Server) 谢谢您可以使用函数计算五分钟前的日期/时间,然后将modifiedtime列与此值进行比较: UPDATE node_status SET status = 0 WHE
node\u status
的表,它有三列:
id(int)
状态(位)
modifiedtime(smalldatetime)
modifiedtime
值,该值比当前时间早5分钟,则status
列设置为0(false)
有人能告诉我怎么做吗?(使用SQL Server)
谢谢您可以使用函数计算五分钟前的日期/时间,然后将modifiedtime列与此值进行比较:
UPDATE node_status SET status = 0 WHERE modifiedtime <= dateadd(minute, -5, CURRENT_TIMESTAMP)
UPDATE node\u status SET status=0,其中modifiedtime您可以使用函数计算五分钟前的日期/时间,然后将modifiedtime列与此值进行比较:
UPDATE node_status SET status = 0 WHERE modifiedtime <= dateadd(minute, -5, CURRENT_TIMESTAMP)
UPDATE node\u status SET status=0,其中modifiedtime如果要基于当前时间执行查询,可以使用getdate(),并使用dateadd函数添加或删除日期中的时间量。因此:
update
node_status
set
status = 0
where
modifiedtime < dateadd(minute, -5, getdate())
更新
节点状态
设置
状态=0
哪里
modifiedtime
如果要基于当前时间进行查询,可以使用getdate(),并使用dateadd函数添加或删除日期中的时间量。因此:
update
node_status
set
status = 0
where
modifiedtime < dateadd(minute, -5, getdate())
更新
节点状态
设置
状态=0
哪里
modifiedtime
查询
UPDATE node_status
SET [Status] = 0
WHERE DATEDIFF(n, ModifiedTime, CURRENT_TIMETAMP) >= 5
但是,如果节点_状态表很大,那么由于表/索引扫描,性能会很差。如果您在ModifiedTime上有索引:
DECLARE @ThresholdTime DATETIME
SET @ThresholdTime = DATEADD(n, -5, CURRENT_TIMESTAMP)
UPDATE node_status
SET [Status] = 0
WHERE ModifiedTime <= @ThresholdTime
DECLARE@ThresholdTime-DATETIME
设置@ThresholdTime=DATEADD(n,-5,当前时间戳)
更新节点\u状态
设置[状态]=0
其中ModifiedTime查询
UPDATE node_status
SET [Status] = 0
WHERE DATEDIFF(n, ModifiedTime, CURRENT_TIMETAMP) >= 5
但是,如果节点_状态表很大,那么由于表/索引扫描,性能会很差。如果您在ModifiedTime上有索引:
DECLARE @ThresholdTime DATETIME
SET @ThresholdTime = DATEADD(n, -5, CURRENT_TIMESTAMP)
UPDATE node_status
SET [Status] = 0
WHERE ModifiedTime <= @ThresholdTime
DECLARE@ThresholdTime-DATETIME
设置@ThresholdTime=DATEADD(n,-5,当前时间戳)
更新节点\u状态
设置[状态]=0
修改时间在哪里