Все, у меня есть одна таблица с именем заказы, которая содержит одно из ее полей с именем Дата создания. Теперь я хочу получить данные из определенного диапазона дат. Прилагаю код:
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, так что мне делать, чтобы получить данные за обе даты? Может кто-нибудь мне помочь?




Логика в вашем предложении WHERE отключена. Используйте следующее для нацеливания на 27 а также 28 июня:
WHERE o.date_created >= '2018-06-27' AND o.date_created < '2018-06-29'
Проблема с o.date_created <= '2018-06-28' заключается в том, что он означает любую дату не ранее полночь 28 июня, то есть полностью исключает 28-е число. Вместо этого я использовал o.date_created < '2018-06-29', который включает весь день 28 июня.
Чтобы получить ожидаемый результат, измените оператор where в запросе на WHERE o.date_created >= '2018-06-27' AND o.date_created < '2018-06-29'.
Эта проблема может возникнуть, когда поле Дата создания имеет тип DateTime, потому что происходит неявный диалог. Это означает, что значения интерпретируются БД как WHERE o.date_created >= '2018-06-27 00:00:00:000' AND o.date_created <= '2018-06-28 00:00:00:000'
Попробуй это
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'