Sql-Server-2016

使用 BETWEEN 排除日期

  • August 2, 2019

我正在嘗試使用 BETWEEN 函式來排除兩個參數日期之間的日期,但我目前的程式碼也排除了 NULL 的出現。我有一個查詢,其中包括可能包含或不包含“關閉日期”的帳戶記錄。我目前的程式碼部分有效,但我不希望它排除根本不包含 Closed Date 的 NULL 記錄。

WHERE ta.ROW_PROCESSED_THRU = '20190731'
 AND NOT CONVERT (VARCHAR(10),ta.CLOSED_DATE,112) BETWEEN '20190701' AND '20190731'
AND (NOT (ta.CLOSED_DATE >= '20190701' AND ta.CLOSED_DATE < '20190801') 
   OR ta.CLOSED_DATE IS NULL)

要包含 NULL,您需要添加顯式 NULL 謂詞。此外,轉換函式可能會顯著降低查詢的性能,更好的是使用兩個謂詞顯式聲明日期範圍:

AND ( NOT (ta.CLOSED_DATE >= '20190701' AND ta.CLOSED_DATE < '20190801') 
   OR ta.CLOSED_DATE IS NULL) 

高溫高壓

引用自:https://dba.stackexchange.com/questions/244359