С другой стороны, вы не можете ограничиться параметром даты, если это NULL
:
SELECT *
FROM ArCustomer ac
WHERE
CAST(ac.Customer as int) > 1000
AND (ac.DateLastSale >= @StartDate OR @StartDate IS NULL)
AND (ac.DateLastSale <= @EndDate OR @EndDate IS NULL)
Или ... вы можете обработать NULL
, рассматривая его как дату низкого или высокого уровня:
SELECT *
FROM ArCustomer ac
WHERE
CAST(ac.Customer as int) > 1000
AND ac.DateLastSale BETWEEN ISNULL(@StartDate, '1900-01-01')
AND ISNULL(@EndDate, '9999-12-31')
EDIT:
Может быть разница в плане выполнения между этими двумя подходами, поэтому вы можете попробовать оба метода и посмотреть, превосходит ли один другой другой ...