例如可以

SELECT foo
FROM bar
WHERE foo BETWEEN 5 AND 10

选择 5 和 10 还是将它们排除在范围之外?

最佳答案

BETWEEN 运算符是包含性的。

从网上书籍:



日期时间警告

注意:使用 DateTimes 你必须小心;如果只给出了日期,则取值为当天午夜;为避免错过结束日期内的时间,或在多个范围内重复捕获第二天午夜的数据,您的结束日期应为截止日期后一天的午夜前 3 毫秒。 3 毫秒,因为任何小于此值的值都将向上舍入到第二天的午夜。

例如要获得 2016 年 6 月内的所有值,您需要运行:
where myDateTime between '20160601' and DATEADD(millisecond, -3, '20160701')
IE。
where myDateTime between '20160601 00:00:00.000' and '20160630 23:59:59.997'
datetime2 和 datetimeoffset

从日期中减去 3 毫秒将使您容易受到 3 毫秒窗口中丢失的行的影响。正确的解决方案也是最简单的一种:

where myDateTime >= '20160601' AND myDateTime < '20160701'

关于sql - MS SQL Server 的 "between"是否包括范围边界?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/749615/

10-16 03:40