尝试选择需要计算特定日期和当前日期之间的差值的

时间:2019-03-20 13:26:28

标签: sql sql-server datetime datediff ssms-2014

这对我来说不是很有效!

我的查询如下:

SELECT COUNT (*) as [generic] 
FROM [Log]
Where value IN (Select ID, tsSendDocument, sysReceivedFrom
WHERE sysReceivedFrom = 'generic' AND 
DATEDIFF(hour, tsSendDocument, GetDate()) > 2) 

那么,我在这里做错了什么?

我希望tsSendDocument列每次超过2小时都进行计数。最终它将给我一个等于1的计数。如果值= 1,我将设置一个表来提醒我,这意味着tsSendDocument早于2个小时。

这有意义吗?

2 个答案:

答案 0 :(得分:1)

根据您的评论,我了解到您想检查最后一个条目是否早于2个小时,因此应该可以:

SELECT TOP 1 CASE WHEN tsSendDocument < DATEADD(HOUR, -2, GETDATE()) THEN 1 ELSE 0 END AS [generic]
FROM [Log]
ORDER BY tsSendDocument DESC

答案 1 :(得分:0)

我认为您只希望聚合:

Select COUNT(*) 
FROM Log
WHERE sysReceivedFrom = 'generic' AND 
      DATEDIFF(hour, tsSendDocument, GetDate()) > = 2;

subquery仅在您指定INNOT IN子句时才返回一个表达式。