尝试 Select 计算需要计算特定日期和当前日期之间差异的地方
Trying to a Select Count where it needs to count the difference between a certain date and current date
这对我来说不是很有效!
我的查询如下:
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 的计数。我设置了一个 table 以在值 = 1 时提醒我,这意味着 tsSendDocument 超过 2 小时。
这有意义吗?
我认为您只需要聚合:
Select COUNT(*)
FROM Log
WHERE sysReceivedFrom = 'generic' AND
DATEDIFF(hour, tsSendDocument, GetDate()) > = 2;
当您指定 IN
或 NOT IN
子句时,subquery
只会 return 一个表达式。
根据你的评论,我了解到你想检查最后一个条目是否早于 2 小时,所以这应该有效:
SELECT TOP 1 CASE WHEN tsSendDocument < DATEADD(HOUR, -2, GETDATE()) THEN 1 ELSE 0 END AS [generic]
FROM [Log]
ORDER BY tsSendDocument DESC
这对我来说不是很有效!
我的查询如下:
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 的计数。我设置了一个 table 以在值 = 1 时提醒我,这意味着 tsSendDocument 超过 2 小时。
这有意义吗?
我认为您只需要聚合:
Select COUNT(*)
FROM Log
WHERE sysReceivedFrom = 'generic' AND
DATEDIFF(hour, tsSendDocument, GetDate()) > = 2;
当您指定 IN
或 NOT IN
子句时,subquery
只会 return 一个表达式。
根据你的评论,我了解到你想检查最后一个条目是否早于 2 小时,所以这应该有效:
SELECT TOP 1 CASE WHEN tsSendDocument < DATEADD(HOUR, -2, GETDATE()) THEN 1 ELSE 0 END AS [generic]
FROM [Log]
ORDER BY tsSendDocument DESC