Обычно я справляюсь с этой ситуацией, создавая внутренний параметр (ы), чтобы сидеть между пользовательским интерфейсом и запросом или хранимой процедурой.Внутренние параметры определяются выражением в зависимости от выбора пользователя.
Допустим, вы хотите, чтобы пользователь выбирал диапазон дат начала и окончания (Начало: 2012-01-01, Конец: 2012-01-31) или месяц (Январь 2012).
Если они выбирают значение для Месяца.Я конвертирую это в эквивалентный диапазон дат во внутреннем выражении параметра.Если они вводят диапазон дат, я просто передаю начальные и конечные значения внутренним параметрам.
Надеюсь, это имеет смысл.с небольшой работой и воображением, я думаю, что подход может справиться с большинством сценариев.