MS SQL Server 的「BETWEEN」運算子的包容性
MS SQL Server 的 BETWEEN 運算子是否包含範圍邊界?換句話說,以下查詢是否:
SELECT foo FROM bar WHERE foo BETWEEN 5 AND 10
選擇恰好為 5 和 10 的值,或者這些值是否被排除在範圍之外?
答案:
MS SQL Server 中的 BETWEEN 運算子是包容性的,這意味著它包括指定範圍內的起始值和結束值。因此,上面的查詢將選擇 foo 列的值介於 5 和 10 之間的行。
From Books Online:
BETWEEN 如果以下值回傳 TRUE test_expression 大於或等於 begin_expression的值且小於或等於end_expression.
日期時間警告:
使用日期時間時,請務必注意,如果僅提供日期,則該值將被視為當天的午夜。為了避免結束日期內遺失時間或重複捕獲第二天的數據,建議從結束日期減去 3 毫秒。這是因為任何小於 3 毫秒的值都會四捨五入到第二天的午夜。
範例:
要取得2016 年6 月內的所有數值,請使用下列指令查詢:
where myDateTime between '20160601' and DATEADD(millisecond, -3, '20160701')
這翻譯過來to :
where myDateTime between '20160601 00:00:00.000' and '20160630 23:59:59.997'
datetime2 和datetimeoffset:
從日期中減去 3 毫秒可能會導致 3 毫秒視窗中丟失行。最有效的解決方案是使用以下運算子:
where myDateTime >= '20160601' AND myDateTime < '20160701'
以上是MS SQL Server 的「BETWEEN」運算子是否包含邊界值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!