SELECT * FROM `customers` where warranty_end BETWEEN '01/12/2017' AND '31/12/2017'
以上是我的查询,warranty_end
列内容为30/12/2018
。
但查询导致Row From Database。
答案 0 :(得分:2)
看起来您的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
。