0

我遇到了以下查询,但不确定它们之间是否有任何区别,

select * from table where date between fromdate and todate

V/S

select * from table where date >= fromdate and date <= todate

如果我们使用第一个查询,它是否包括从和到日期的日期?即在 16/10/2012 和 22/10/2012 之间,是否包括 16 日和 22 日?

太感谢了。

4

6 回答 6

1

是的,它包括他们。
这就是我避免的原因BETWEEN。这个名字至少是模棱两可的。不同的人理解不同的事情,你的问题也表明了这一点。

例如,在我的理解中, between 是独占的,但在 SQL 中是包含的。

于 2012-10-04T10:59:50.983 回答
1

没有区别。

(a BETWEEN b AND c)

和写一样

((a >= b) AND (a <= c))
于 2012-10-04T11:00:49.283 回答
0

没有不同

两个查询都会给出相同的结果

于 2012-10-04T10:59:40.657 回答
0

没有区别:

expr 介于最小值和最大值之间

如果 expr 大于或等于 min 并且 expr 小于或等于 max,则 BETWEEN 返回 1,否则返回 0。这相当于表达式 (min <= expr AND expr <= max) 如果所有参数都是同类型。

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between

于 2012-10-04T10:59:47.007 回答
0

是的,它们包括在内。第一个只是第二个的捷径,所以它们是等价的。

于 2012-10-04T11:00:16.443 回答
0

您可以在这里查看一些关于 between 的解释: MySQL "between" 子句不包含? 它还显示使用 <= & => 更快

于 2012-10-04T11:03:36.833 回答