проблема при получении данных в MySQL

0

Каждый, у меня есть одна таблица, названная в качестве заказов, которая содержит одно из полей с именем 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, так что мне делать, чтобы получать данные обеих дат? Кто-нибудь может мне помочь, пожалуйста?

Теги:
sql-server
mysql-workbench

3 ответа

1
Лучший ответ

Логика в вашем 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 июня.

1

Чтобы получить ожидаемый результат, измените оператор where в запросе на WHERE o.date_created >= '2018-06-27' AND o.date_created < '2018-06-29'

Эта проблема может возникнуть, когда поле date_created имеет тип DateTime, потому что происходит неявный разговор. Это означает, что значения интерпретируются DB как WHERE o.date_created >= '2018-06-27 00:00:00:000' AND o.date_created <= '2018-06-28 00:00:00:000'

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню