我遇到了以下问题,但不确定它们之间是否存在任何差异,
select * from table where date between fromdate and todate
V/S
select * from table where date >= fromdate and date <= todate
如果我们使用第一个查询,它是否包含from&amp;至今?即在16/10/2012和22/10/2012之间,是否包括第16和第22?
非常感谢你。
答案 0 :(得分:1)
Yes, it includes them.
这就是我避免BETWEEN
的原因。这个名字至少含糊不清。不同的人理解不同的东西,你的问题也表明了这一点。
例如,根据我的理解,之间是独占,但在SQL中它是包含。
答案 1 :(得分:1)
没有区别。
(a BETWEEN b AND c)
与写作相同
((a >= b) AND (a <= c))
答案 2 :(得分:0)
没有区别
两个查询都会给出相同的结果
答案 3 :(得分:0)
没有区别:
expr BETWEEN min AND max
如果expr大于或等于min且expr小于或等于max,则BETWEEN返回1,否则返回0.这相当于表达式(min&lt; = expr AND expr&lt; = max)如果所有参数都是相同的类型。
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between
答案 4 :(得分:0)
是的,他们被包括在内。第一个只是第二个的快捷方式,所以它们是等价的。
答案 5 :(得分:0)
你可以在这里查看一些解释: MySQL "between" clause not inclusive? 它还读取使用&lt; =&amp; =&GT;更快