使用 MS SQL Server 的“BETWEEN”运算符进行包含范围检索
使用 MS SQL Server 的“BETWEEN”运算符时,必须了解是否范围边界包含或排除在选择标准中。
回答具体问题问题,“BETWEEN”运算符是包容性的。这意味着,默认情况下,指定为下限和上限的值包含在结果集中。在提供的示例中:
SELECT foo FROM bar WHERE foo BETWEEN 5 AND 10
查询将选择“foo”列的值在(并包括)5 和 10 之间的所有行。
但是,这种包含行为使用 DateTimes 时可能会提出警告。默认情况下,当仅指定日期时,SQL Server 会将其视为当天的午夜。这意味着,如果要捕获特定日期内的所有值,则必须从结束日期减去 3 毫秒,以避免丢失午夜前 3 毫秒内的数据。
例如,要检索以内的所有值2016 年 6 月,正确的查询为:
where myDateTime between '20160601' and DATEADD(millisecond, -3, '20160701')
这可确保您捕获 2016 年 6 月内的所有值,包括属于 3 年内的值6 月 30 日午夜之前的毫秒。
需要注意的是,虽然对于大多数数据类型来说,“BETWEEN”运算符是包容性的,但也有例外。例如,对于“datetime2”和“datetimeoffset”数据类型,通常建议使用“>=”和“<”运算符而不是“BETWEEN”以避免潜在的范围截断问题。
以上是MS SQL Server 的'BETWEEN”运算符是包含还是排除?的详细内容。更多信息请关注PHP中文网其他相关文章!