Sql 使用子选择更新/如何选择大于24小时的时间

Sql 使用子选择更新/如何选择大于24小时的时间,sql,sql-server,Sql,Sql Server,请看下图。我不熟悉sql语法,下面的update语句带有一个子选择。我不确定这是正确的方法,但这就是我所拥有的 我要做的是检查LastRestartTime,如果它大于24小时RestartInterval,则将重新启动时间更新为当前时间 我有一个exe,它将检查表中的LastRestartTime,如果Active=1且RestartInterval>=24,它将终止并重新启动进程(如果进程停止,则仅启动进程) 然后,我希望程序将LastRestarttime更新到当前时间 我不知道该怎么做

请看下图。我不熟悉sql语法,下面的update语句带有一个子选择。我不确定这是正确的方法,但这就是我所拥有的

我要做的是检查
LastRestartTime
,如果它大于24小时
RestartInterval
,则将重新启动时间更新为当前时间

我有一个exe,它将检查表中的
LastRestartTime
,如果
Active=1且RestartInterval>=24
,它将终止并重新启动进程(如果进程停止,则仅启动进程)

然后,我希望程序将
LastRestarttime
更新到当前时间

我不知道该怎么做

update any_table.dbo.thisDatabase 
set LastRestartTime = GetDate() 
where ProcessName In (Select ProcessName 
                      from any_table.dbo.thisDatabase 
                      where LastRestartTime > 24);

看起来您不需要子查询,请尝试:

UPDATE any_table.dbo.thisDatabase 
SET LastRestartTime = CURRENT_TIMESTAMP 
WHERE LastRestartTime <= DATEADD(HOUR, -24, CURRENT_TIMESTAMP);
更新任意_table.dbo.this数据库
设置LastRestartTime=当前时间戳

我不知道这个问题与C#有什么关系。删除了标记。它与c#有关,因为这是我在Webby中编写程序的内容,为什么要回滚我的格式?现在您已经回滚了@marc的标记编辑…因为您没有提供任何有建设性的内容,并且您的格式对大多数部分都没有意义。当我使用的是Microsoft SQL server时,您删除了Microsoft标记。例如,如果您希望获得帮助,并且SQL server暗示Microsoft,则需要有格式正确的问题。在发布代码时,应将其格式化。24后缺少逗号。谢谢,这更合适。我只是在学习,我不知道当前可用的时间戳和日期添加选项没有问题。还有一个
DATEDIFF
函数,但我永远记不起舍入是如何工作的(即23.75小时的差分是向上舍入到24还是向下舍入到23),所以我总是使用
DATEADD
这个where语句。是不是应该是LastRestartTime的ErikPhilips,我以前从没想过,谢谢你提供的信息。更新您的答案和改进@webby68,值得注意这一变化。