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
)指定下限和上限.