在mysql中获取数据的java问题

2w3kk1z5  于 2021-06-24  发布在  Mysql
关注(0)|答案(3)|浏览(152)

各位,我有一个名为orders的表,其中包含一个名为date\u 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年6月27日的数据。我没有获得2018-06-28的数据,那么我应该如何获取这两个日期的数据?有人能帮我吗?

yyhrrdl8

yyhrrdl81#

若要获得预期结果,请更改上查询中的where语句 WHERE o.date_created >= '2018-06-27' AND o.date_created < '2018-06-29' 当字段date\u created的类型为datetime时,由于发生隐式对话,可能会出现此问题。这意味着这些值是用db-like来解释的 WHERE o.date_created >= '2018-06-27 00:00:00:000' AND o.date_created <= '2018-06-28 00:00:00:000'

3qpi33ja

3qpi33ja2#

你的逻辑 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日的一整天。

roqulrg3

roqulrg33#

试试这个

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'

如果您在创建日期\u有索引,那么上面的查询不会使用该索引。在这种情况下,最好使用以下条件o.date\u created>='2018-06-27'和o.date\u created<'2018-06-29'

相关问题