我正面临编写SQL查询的问题,这应该很容易我猜,但我无法专注于该查询。因此,从这个网站获得一些帮助。
问题:我有一个表“请求”,其中包含以下列 -
CreatedOn:当我创建新请求时,CreatedOn将填充当前日期时间
LastModifiedOn:当有人修改记录时,此字段将使用修改后的当前日期时间进行更新。默认情况下,这等于firstOn首次创建请求时。
现在要检查的逻辑是 - 最初请求状态是“已提交”。如果请求未在下一个10分钟或10分钟间隔内修改,则请求状态应更新为“已取消”。现在我无法了解如何编写此查询。
编辑:如果请求在任何10分钟间隔内被修改,那么我不想更新请求被取消。即一般情况下,我希望仅在最近10分钟内未修改记录时才更新状态
如果需要任何其他详细信息,请与我们联系。您可以假设还有一个唯一的RequestID列。
答案 0 :(得分:4)
update Request
set State = 'Cancelled'
where RequestID = @MyRequestID
and State = 'Submitted'
and LastModifiedOn < dateadd(mi, -10, getdate())
注意:此查询旨在SARGable,以便在功能中不使用LastModifiedOn
以获得最佳效果。
答案 1 :(得分:1)
update Request
set State='Cancelled'
where State='Submitted' AND dateadd(mi, -10, GetDate()) < ModifiedOn
答案 2 :(得分:1)
更新请求 set State ='Canceled',LastModifiedOn = getdate() 其中State ='Submitted'和datediff(min,LastModifiedOn,getdate())&gt; 10
答案 3 :(得分:1)
您在寻找DateDiff吗?
DATEDIFF(minute, LastModifiedOn, getdate()) > 10