Если вы установите параметр в процедуре SQL в качестве необязательного параметра, указав значение по умолчанию
CREATE PROCEDURE MyProc
...
@StartDate datetime = null,
....
, вы можете просто пропустить отправку этого параметра из кода c #
DateTime result;
if (DateTime.TryParse(txtStartDate.Text, out result))
{
cmdSearch.Parameters.Add(new SqlParameter("@StartDate", SqlDbType.DateTime));
cmdSearch.Parameters["@StartDate"].Value = result;
}
Если анализ текстового поля не выполнен, параметр не добавляется в список параметров, а база данных использует значение по умолчанию.
Кроме того, использование DateTime.TryParse (..) предотвращает обработку исключений..