У меня есть хранимая процедура, которая возвращает данные, использованные в отчете. Пользователь может указать множество параметров, два из которых являются начальной и конечной датой. Я могу использовать оператор WHERE create_date BETWEEN @arg_start AND @arg_end
для фильтрации по датам.
Что я не знаю, как это сделать, так это справиться с ситуацией, когда пользователь не указывает даты. CASE
не поддерживает ничего типа WHERE create_date = CASE @arg_start WHEN NULL THEN create_date ELSE BETWEEN @arg_start AND @arg_end
.
Я провел много исследований в Google, MSDN, и здесь, и я не нашел, чтобы справиться с условной нулевой обработкой даты и времени. Хотя я знаю, что это плохая форма, я могу передать программную передачу в магическую дату, такую как 01.01.1900, для проверки вместо нуля, но это не очень помогает при обработке условной даты.