【问题标题】:issue in fetching data in MySQL在 MySQL 中获取数据的问题
【发布时间】:2018-12-07 03:50:45
【问题描述】:

大家,我有一个名为 orders 的表,其中包含一个名为 date_created 的字段。现在我想从特定的日期范围中获取数据。我附上代码:

SELECT * FROM
orders o,
accounts_store a WHERE  o.date_created >= '2018-06-27' AND o.date_created <= '2018-06-28'
    AND a.account_id = '1'
    AND a.store_id = '1'

但这会获取唯一日期 2018-06-27 的数据。我没有得到 2018-06-28 的数据,那么我应该怎么做才能获取两个日期的数据? 谁能帮帮我?

【问题讨论】:

    标签: java mysql sql sql-server mysql-workbench


    【解决方案1】:

    试试这个

    SELECT * FROM
    orders o,
    accounts_store a WHERE  o.date_created >= '2018-06-27' AND DATE_FORMAT(o.date_created, '%Y-%m-%d') <= '2018-06-28'
        AND a.account_id = '1'
        AND a.store_id = '1'
    

    如果您在 date_created 上有索引,则上述查询不会使用该索引。在这个更好地使用以下条件 o.date_created >= '2018-06-27' AND o.date_created

    【讨论】:

      【解决方案2】:

      要获得预期结果,请更改 WHERE o.date_created &gt;= '2018-06-27' AND o.date_created &lt; '2018-06-29' 查询中的 where 语句

      当字段 date_created 具有 DateTime 类型时,可能会出现此问题,因为发生了隐式对话。这意味着值由 DB 解释,如 WHERE o.date_created &gt;= '2018-06-27 00:00:00:000' AND o.date_created &lt;= '2018-06-28 00:00:00:000'

      【讨论】:

        【解决方案3】:

        WHERE 子句中的逻辑已关闭。使用以下方法来定位 6 月 27 日和 6 月 28 日:

        WHERE o.date_created >= '2018-06-27' AND o.date_created < '2018-06-29'
        

        o.date_created &lt;= '2018-06-28' 的问题在于它表示 6 月 28 日午夜 或之前的任何日期,即它基本上完全排除了 28 日。相反,我使用了o.date_created &lt; '2018-06-29',其中包括 6 月 28 日的一整天。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-06-03
          • 1970-01-01
          • 2014-08-23
          • 2021-09-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多