Вы можете использовать оператор CASE:
declare @InputDate datetime;
declare @CriteriumDate datetime;
set @InputDate = convert(datetime, '<Search Term>',103);
set @CriteriumDate = = convert(datetime, '1/04/2019',103);
select o.* from objects as o
where o.modifieddate >= case when @InputDate < @CriteriumDate then @CriteriumDate else @InputDate end;
(я ввел некоторые переменные даты, чтобы сделать запрос более читабельным.)
Редактировать:
As @ lvr123указал, что использование операторов CASE становится уродливым, когда нужно проверять несколько значений.Если версия SQL Server допускает это, в этом случае может использоваться следующий запрос:
declare @InputDate datetime;
declare @Criteria table (dt datetime);
insert into @Criteria (dt) values (convert(datetime, '<Search Term 1>',103));
insert into @Criteria (dt) values (convert(datetime, '<Search Term 2>',103));
insert into @Criteria (dt) values (convert(datetime, '1/04/2019',103));
select o.* from objects as o
where o.modifieddate >= (select max(dt) from @Criteria);
Этот код, конечно, может быть несколько оптимизирован.И этот пример жестко запрограммирован с тремя значениями.Добавление дополнительных значений требует только добавления дополнительных INSERT-запросов к таблице @Criteria.