SELECT * FROM 'customers' where warranty_end BETWEEN '01/12/2017' AND '31/12/2017'
приведенный выше мой запрос, в содержимом столбца warranty_end
30/12/2018
.
Но запрос, полученный в результате строки из базы данных.
Похоже, что ваш столбец warranty_end
- это текст, и кроме того, вы сохраняете свои даты, есть формат, отличный от ISO. Одним из способов решения этой проблемы было бы преобразование текстовых дат в фактические даты с использованием STR_TO_DATE
:
SELECT *
FROM customers
WHERE STR_TO_DATE(warranty_end, '%d/%m/%Y') BETWEEN '2017-12-01' AND '2017-12-31';
Обратите внимание, что предложение BETWEEN
фактически использует литералы даты ISO.
Перемещение вперед гораздо лучший вариант будет хранить гарантии даты окончания в колонке даты, например, datetime
.