各位,我有一个名为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的数据,那么我应该如何获取这两个日期的数据?有人能帮我吗?
3条答案
按热度按时间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'
3qpi33ja2#
你的逻辑
WHERE
条款已关闭。使用以下方法瞄准6月27日和28日:问题在于
o.date_created <= '2018-06-28'
是指6月28日午夜或之前的任何日期,即基本上不包括28日。相反,我用o.date_created < '2018-06-29'
,包括6月28日的一整天。roqulrg33#
试试这个
如果您在创建日期\u有索引,那么上面的查询不会使用该索引。在这种情况下,最好使用以下条件o.date\u created>='2018-06-27'和o.date\u created<'2018-06-29'