Вы можете просто использовать параметры для этих значений. В качестве бонуса, avoiding functions against the column will help assist a seek if an index exists on the column (конечно SELECT *
means it will likely end up as a full scan anyway, or a range scan and a bunch of lookups) ...
-- these would be input parameters for your stored procedure
DECLARE @y INT = 2011, @m INT = 5;
-- now have a date variable:
DECLARE @dt DATE = DATEADD(MONTH, @m-1, DATEADD(YEAR, @y-1900, 0));
SELECT ... FROM dbo.tablename
WHERE MDTFlgtStart >= @dt
AND MDTFlgtStart < DATEADD(MONTH, 1, @dt);
Кроме того, вы должны прекратить приглашать кто назвал эти колонны на обед, потому что я должен предположить, что они не очень хорошо.
Я ожидаю пропустить что-то очевидное, но заменим вызовы функций числовыми литералами, например. '... ГДЕ ГОД (MDTFlgtStart) = 2011 И МЕСЯЦ (MDTFlgtStart) = 5'. – collapsar