Ваш предложенный метод не будет очень дружественным к индексу, возможно, использовать альтернативный подход?
Следующий SQL эффективно преобразует дату в начало месяца ...
DATEADD(month, DATEDIFF(month, 0, <a date>), 0)
С этим вы могли бы пройти месяц, который вас интересует, и для вашего запроса как ...
SELECT
*
FROM
evn
WHERE
EventDate >= DATEADD(month, DATEDIFF(month, 0, @myDate), 0)
AND EventDate < DATEADD(month, DATEDIFF(month, 0, @myDate) + 1, 0)
Это позволяет избежать неявного преобразования между строкой и датами. Более того, он гарантирует, что математические манипуляции не выполняются в поле поиска (EventDate), а выполняются только один раз для входного параметра. Отсутствие манипулирования полем EventDate позволяет очень эффективно использовать любые соответствующие индексы.