在SQL Server 2000和2005中:
WHERE
子句有什么区别?查询1:
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,因此查询语法错误)
发布于 2009-10-27 19:40:55
它们是相同的: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'
(请注意第二种情况下的<
而不是<=
。)
发布于 2009-10-27 19:41:44
它们是一样的。
需要注意的一件事是,如果您针对日期时间使用此日期,则结束日期的匹配将是一天的开始:
<= 20/10/2009
与以下内容不同:
<= 20/10/2009 23:59:59
(它将与<= 20/10/2009 00:00:00.000
相匹配)
发布于 2009-10-27 21:24:19
尽管BETWEEN
很容易阅读和维护,但我很少推荐使用它,因为它是一个封闭的时间间隔,而且正如前面提到的,这可能是日期的问题-即使没有时间部分。
例如,在处理月度数据时,通常比较日期BETWEEN first AND last
,但在实践中,这通常更容易编写dt >= first AND dt < next-first
(这也解决了时间部分问题)-因为确定last
通常比确定next-first
(减去一天)要长一个步骤。
此外,另一个问题是需要在正确顺序(即BETWEEN low AND high
)中指定下限和上界。
https://stackoverflow.com/questions/1630239
复制相似问题