首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL :在vs <=和>=之间

SQL :在vs <=和>=之间
EN

Stack Overflow用户
提问于 2009-10-27 19:38:15
回答 10查看 184.7K关注 0票数 137

在SQL Server 2000和2005中:

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

查询1:

代码语言:javascript
复制
SELECT EventId, EventName
FROM EventMaster
WHERE EventDate BETWEEN '10/15/2009' AND '10/18/2009'

查询2:

代码语言:javascript
复制
SELECT EventId, EventName
FROM EventMaster
WHERE EventDate >='10/15/2009'
  AND EventDate <='10/18/2009'

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

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2009-10-27 19:40:55

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

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

代码语言:javascript
复制
Select EventId,EventName from EventMaster
where EventDate >= '10/15/2009' and EventDate < '10/19/2009'

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

票数 140
EN

Stack Overflow用户

发布于 2009-10-27 19:41:44

它们是一样的。

需要注意的一件事是,如果您针对日期时间使用此日期,则结束日期的匹配将是一天的开始:

代码语言:javascript
复制
<= 20/10/2009

与以下内容不同:

代码语言:javascript
复制
<= 20/10/2009 23:59:59

(它将与<= 20/10/2009 00:00:00.000相匹配)

票数 42
EN

Stack Overflow用户

发布于 2009-10-27 21:24:19

尽管BETWEEN很容易阅读和维护,但我很少推荐使用它,因为它是一个封闭的时间间隔,而且正如前面提到的,这可能是日期的问题-即使没有时间部分。

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

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

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1630239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档