Shy*_*yju 103 sql t-sql sql-server between where
在SQL Server 2000和2005中:
WHERE条款有什么区别?查询1:
SELECT EventId, EventName
FROM EventMaster
WHERE EventDate BETWEEN '10/15/2009' AND '10/18/2009'
Run Code Online (Sandbox Code Playgroud)
查询2:
SELECT EventId, EventName
FROM EventMaster
WHERE EventDate >='10/15/2009'
AND EventDate <='10/18/2009'
Run Code Online (Sandbox Code Playgroud)
(编辑:第二个Eventdate最初缺失,因此查询语法错误)
Ton*_*ews 108
它们是相同的:BETWEEN是问题中较长语法的简写.
使用替代更长的语法,BETWEEN如果不起作用,例如
Select EventId,EventName from EventMaster
where EventDate >= '10/15/2009' and EventDate < '10/18/2009'
Run Code Online (Sandbox Code Playgroud)
(注意<而不是<=第二种情况.)
Irf*_*rfy 34
他们是一样的.
需要注意的一件事是,如果你在DATETIME使用它,那么结束日期的匹配将是一天的开始:
<= 20/10/2009
Run Code Online (Sandbox Code Playgroud)
是不一样的:
<= 20/10/2009 23:59:59
Run Code Online (Sandbox Code Playgroud)
(它会匹配<= 20/10/2009 00:00:00.000)
Cad*_*oux 13
虽然BETWEEN易于阅读和维护,但我很少推荐使用它,因为它是一个封闭的间隔,如前所述,这可能是日期的问题 - 即使没有时间组件.
例如,在处理月度数据时,通常比较日期BETWEEN first AND last,但实际上这通常更容易编写dt >= first AND dt < next-first(这也解决了时间部分问题) - 因为确定last通常比确定next-first(通过减去一天)更长一步.
另外,另一个问题是需要以正确的顺序(即BETWEEN low AND high)指定下限和上限.