#sql-server #date #tsql #if-statement
#sql-server #Дата #tsql #if-оператор
Вопрос:
необходимо проверить, отображается ли сегодня в какой-либо таблице дат, и если да, то для печати таблицы (в задании, выполняемом каждый день) я должен использовать IF .
вот что я пытаюсь — но это не работает: потому что в табличном времени больше 1 значения. я также пытаюсь использовать EXISTS, но это тоже не работает.
IF GETDATE() = (
select date
from Time
where day_by_OF = 2
)
begin
exec sp_run_update;
end
Комментарии:
1. Хорошо, я кое-что узнал. я использую SQL Server
2. Что это значит: «распечатать таблицу»?
3. я обновлю свое предложение. мне нужно запустить процедуру, если условие правильное
4. Итак, если today появляется в любой дате, где day_by_OF = 2, тогда вы выполняете?
5. да, если day_by_OF = 2, то вы выполняете
Ответ №1:
Если я правильно вас понял, все будет в порядке:
IF ( select count(*)
from Time
where day_by_OF = 2
and date = GETDATE()) > 0
begin
select * from time;
end;
Ответ №2:
Помимо того, как писать процедурные вещи в sql-server, лучше позволить базе данных применять ваши критерии поиска:
IF EXISTS (SELECT 1 FROM Time WHERE convert(date,date) = CONVERT (date, GETDATE()))
Может быть, это не работает, потому GETDATE()
что возвращает значение datetime, а не дату.
Ответ №3:
это работает:
IF EXISTS (SELECT date FROM time
WHERE day_by_OF = 2
and convert(date,date) = CONVERT (date, GETDATE()))
спасибо вам всем