尝试选择计数,它需要计算某个日期和当前日期之间的差异

问题描述 投票:1回答:2

这对我来说不太合适!

我的查询如下:

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小时。

这有什么意义吗?

sql sql-server datetime datediff ssms-2014
2个回答
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

0
投票

我想你只想聚合:

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

当你指定subquery orIN子句时,NOT IN只会返回一个表达式。

© www.soinside.com 2019 - 2024. All rights reserved.