У меня есть следующий оператор SQL, над которым я работаю. Я урезал его до частей, необходимых для иллюстрации проблемы.
DECLARE @mwareId as int = 9647,
@startDate as datetime = '2011-07-20',
@endDate as datetime = '2011-07-20'
IF OBJECT_ID('tempdb..#tmpInvoiceList', 'U') IS NOT NULL DROP TABLE #tmpInvoiceList
-- Get base invoice list for customer
SELECT invoiceId
,invoiceNumber
,customerId
,customerName
,customerCode
,createDate
,lastModifiedDate
,invoiceDate
,totalInvoiceAmount
,statusId
,isPaid
INTO #tmpInvoiceList
FROM Invoice.Invoice
-- Apply date range if applicable
IF ( @startDate != NULL AND @endDate != NULL )
BEGIN
DELETE FROM #tmpInvoiceList
WHERE invoiceDate NOT BETWEEN @startDate AND @endDate
END
SELECT * FROM #tmpInvoiceList
У меня для переменных @startDate и @endDate установлены значения даты. Проблема в том, что блок if, который применяет диапазон дат к временной таблице, не выполняется, хотя ни одна из двух переменных не является нулевой, и я не могу найти причину для этого.