как хранится ваша дата?
из вашего sql, я думаю, у вас есть одно поле на месяц, одно на год и одно на день. Я бы рекомендовал вместо этого использовать одно поле даты и времени, а затем вы можете использовать метод DateAdd () , чтобы добавить 12 месяцев (или любой другой интервал).
РЕДАКТИРОВАТЬ: мне было отмечено в комментарии, что одна вещь, которую вы получаете от этого, это производительность - которая более или менее важна в зависимости от масштаба вашего приложения, но всегда приятно осознавать. если вы выполните этот запрос в хранимой процедуре, вот что вы будете делать:
DECLARE @oneYearAhead datetime;
SET @oneYearAhead = DateAdd(m, 12, @PassedDate)
SELECT * FROM ra_ProjectCalendar
WHERE @PassedDate <= [Date] AND [Date] <= @oneYearAhead;
с указанным выше кодом, вы получите все записи между датой, которую вы проходите, и на год вперед. (Я не уверен на 100% в синтаксисе для объявления и установки переменной @oneYearAhead
, но вы поняли ...). Обратите внимание, что []
, который я использую вокруг имени столбца Дата, позволяет мне использовать зарезервированные слова в именах столбцов - я сделал это привычкой, вместо того, чтобы запоминать, какие слова зарезервированы ...