在MySQL中获取数据的问题

时间:2018-06-28 06:58:05

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

每个人,我都有一个名为 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的数据,那我该怎么做来获取两个日期的数据呢? 谁能帮我吗?

3 个答案:

答案 0 :(得分:1)

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

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

o.date_created <= '2018-06-28'的问题在于,它意味着6月28日午夜或更早的任何日期,即基本上完全排除了28日。相反,我使用了o.date_created < '2018-06-29',其中包括6月28日的整个一天。

答案 1 :(得分:1)

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

当字段 date_created 的类型为DateTime时,可能会出现此问题,因为发生了隐式对话。这意味着值由数据库解释,例如WHERE o.date_created >= '2018-06-27 00:00:00:000' AND o.date_created <= '2018-06-28 00:00:00:000'

答案 2 :(得分:0)

尝试一下

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'和o.date_created <'2018-06-29'