Проверка, является ли последняя запись старше 1 часа

#sql #sql-server

#sql #sql-сервер

Вопрос:

Недавно я создал небольшое приложение, которое отправляет электронное письмо. В настоящее время я пытаюсь отправить электронное письмо всякий раз, когда последняя запись в базе данных SSMS старше 1 часа.

Я использую оператор case в SQL-запросе, чтобы попытаться вернуть запрос 1 или 0.

Как мне выполнить SQL-запрос?

Я надеялся на ввод, подобный:

 CASE
    WHEN condition1 THEN result1
    ELSE result
END;
 

Заранее благодарю вас.

Комментарии:

1. Пожалуйста, предоставьте образцы данных и желаемые результаты.

2. CASE выражение; SQL Server не допускает Case Switch операторов () .

3. @Larnu да, это так.

4.Нет, это не так, @JeffUK . T-SQL никогда не поддерживал Case операторы, только выражения.

5. Есть ли причина, по которой вы не могли просто добавить предложение WHERE, чтобы найти записи, соответствующие вашему условию? ...where DATEDIFF(hour, startdate, enddate) > 1

Ответ №1:

У вас может быть оператор select, который проверяет, найдена ли какая-либо запись, а затем возвращает 1, иначе 0.

 SELECT CASE 
WHEN EXISTS (SELECT * FROM TableName WHERE datediff(hh,datecolumn,getdate())>1) THEN 1 
ELSE 0 END AS NewRecordsFound
 

Или

 SELECT IIF(EXISTS(SELECT * FROM TableName WHERE datediff(hh,datecolumn,getdate())>1),1,0) AS NewRecordsFound
 

Или

 IF EXISTS(SELECT * FROM TableName WHERE datediff(hh,datecolumn,getdate())>1)
BEGIN
SELECT 1 AS NewRecordsFound
END
ELSE
BEGIN
SELECT 0 AS NewRecordsFound
END