SQL:在与 <= 和 >= 之间

新手上路,请多包涵

在 SQL Server 2000 和 2005 中:

  • 这两个 WHERE 子句有什么区别?
  • 我应该在哪些情况下使用哪一个?

查询一:

 SELECT EventId, EventName
FROM EventMaster
WHERE EventDate BETWEEN '10/15/2009' AND '10/18/2009'

查询 2:

 SELECT EventId, EventName
FROM EventMaster
WHERE EventDate >='10/15/2009'
  AND EventDate <='10/18/2009'

(编辑:最初缺少第二个 Eventdate,因此查询在语法上是错误的)

原文由 Shyju 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 655
2 个回答

它们是相同的: BETWEEN 是包含两个值( EventDate >= '10/15/2009' and EventDate <= '10/19/2009' )的问题中较长语法的简写。

使用另一种更长的语法,其中 BETWEEN 不起作用,因为不应包含一个或两个值,例如

Select EventId,EventName from EventMaster
where EventDate >= '10/15/2009' and EventDate < '10/19/2009'

(注意 < 而不是 <= 在第二种情况下。)

原文由 Tony Andrews 发布,翻译遵循 CC BY-SA 4.0 许可协议

尽管 BETWEEN 易于阅读和维护,但我很少推荐使用它,因为它是一个封闭的区间,并且如前所述,这可能是日期的问题——即使没有时间组件。

例如,在处理月度数据时,通常比较日期 BETWEEN first AND last ,但实际上这通常更容易编写 dt >= first AND dt < next-first (这也解决了时间部分问题) - 因为确定 last 通常比确定 next-first 长一步(减去一天)。

此外,另一个问题是确实需要以 正确的顺序 指定下限和上限(即 BETWEEN low AND high )。

原文由 Cade Roux 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进