【问题标题】:Difference between "between fromdate and todate" & " date >= fromdate and date <= todate"“fromdate 和 todate 之间”和“date >= fromdate 和 date <= todate”之间的区别
【发布时间】:2012-10-04 10:58:10
【问题描述】:

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

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 日?

非常感谢。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    Yes, it includes them.
    这就是为什么我避免BETWEEN。这个名字至少是模棱两可的。不同的人理解不同的东西,你的问题也表明了这一点。

    例如,在我的理解中,between是exclusive,但在SQL中是inclusive

    【讨论】:

    • 似乎在 mySQL 中将日期设置为 YYYY-MM-DD 00:00:00,如果没有定义时间,则默认为 00:00:00。我有一个日期列,其中包含 2012-09-10 18:10:40 之类的数据。当我使用以下代码时,它不包括此数据 select * from table where date between 2012-08-10 and 2012-09-10。它仅包括 9 月 10 日之前的数据。是否有办法更改 SQL 将使用 2012-09-10 23:59:59。
    • @Will:这与between 关键字或您的一般问题无关。请针对此问题发布一个新问题。
    【解决方案2】:

    没有区别。

    (a BETWEEN b AND c)
    

    和写一样

    ((a >= b) AND (a <= c))
    

    【讨论】:

      【解决方案3】:

      没有区别

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

      【讨论】:

        【解决方案4】:

        没有区别:

        在最小值和最大值之间的表达式

        如果 expr 大于等于 min 且 expr 小于等于 max,则 BETWEEN 返回 1,否则返回 0。这相当于表达式 (min

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

            您可以在此处查看一些解释: MySQL "between" clause not inclusive? 它还显示使用 更快

            【讨论】:

              猜你喜欢
              • 2012-04-27
              • 1970-01-01
              • 1970-01-01
              • 2019-12-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-05-04
              • 1970-01-01
              相关资源
              最近更新 更多