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中文网其他相关文章!