Вы можете добавить DATEDIFF в предложение WHERE, чтобы ограничить диапазон до года;
AND DATEDIFF(d, @firstDate, @secondDate) < 366
Однако это не вернет ничего, если диапазон превышает год. Если вы хотите, чтобы запрос возвращался на летние результаты, вы могли бы использовать что-то вроде этого;
WHERE "view"."myDate" between @firstDate and
CASE
WHEN DATEDIFF(d, @firstDate, @secondDate) < 366 THEN @secondDate
ELSE DATEADD(d, 365, @firstDate)
END
Если вы хотите, чтобы вызвать ошибку, если пользователь предоставляет неверный диапазон, то вам придется использовать хранимую процедуру для источника данных и выполнить проверку параметров. Что-то вроде этого;
CREATE PROC dbo.GetMyData (@firstDate date, @secondDate) AS
BEGIN
IF (DATEDIFF(d, @firstDate, @secondDate) > 365)
BEGIN
RAISERROR('Please restrict searches to less than a year.', 16, 1)
RETURN
END
SELECT ...
WHERE "view"."myDate" between @firstDate and @secondDate
END