У меня есть запрос, который внедряется в MySQL из expressJS, однако, когда эти запросы выполняются.Иногда мне возвращают данные, которые не соответствуют условиям правильно.
Оригинал:
SELECT * FROM table
WHERE status = 'Invoiced'
AND (ordereddate between '2009-12-01' AND '2011-12-30')
OR (duedate between '2009-12-01' AND '2011-12-30');
Результаты:
Ordered Date Due Date Status
2009-11-18 2009-12-16 Invoiced
2009-11-18 2009-12-14 Cancelled
Результаты показывают элементы с любым статусомвыполняется, но условие даты выполнено.
Попытка:
SELECT * FROM table
WHERE (status = 'Invoiced')
AND (ordereddate between '2009-12-01' AND '2011-12-30')
AND (duedate between '2009-12-01' AND '2011-12-30');
Результаты: Если либо ordereddate
или duedate
выходит за пределы диапазона дат, элемент будет исключен из результата.
Изменено на AND
вместо OR
Tried:
SELECT * FROM table
WHERE status = 'Invoiced'
AND (ordereddate AND duedate between '2009-12-01' AND '2011-12-30');
Результаты: Возвращает все правильно, кроме случаев, когда ordereddate
или duedate
находятся вне диапазона дат, строка будетисключено из результата.
Объединено ordereddate
и duedate
, где условие
Попробовано:
SELECT * FROM table
WHERE status = 'Invoiced'
AND (ordereddate OR duedate between '2009-12-01' AND '2011-12-30');
Результат:
Ordered Date Due Date Status
2008-07-07 2008-07-28 Invoiced
2008-07-07 2008-07-25 Invoiced
2008-07-07 2008-07-23 Invoiced
Похоже, что этот выводит правильный статус, однако дата неверна, он, кажется, вытягивает что-либо со статусом Invoiced и игнорирует диапазон дат.