Попытка выбрать счетчик, где нужно посчитать разницу между определенной датой и текущей датой - PullRequest
1 голос
/ 20 марта 2019

Это не совсем работает для меня!

Мой запрос выглядит следующим образом:

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 ]

1 голос
/ 20 марта 2019

Согласно вашему комментарию, я понял, что вы хотите проверить, старше ли последняя запись, чем 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 голосов
/ 20 марта 2019

Я думаю, что вы хотите только агрегацию:

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

subquery вернет только одно выражение, если вы указали условие IN или NOT IN.

...