这就是事情 - 我将数据库中的日期保存为字符串格式为dd / mm / yyyy。我想获得日期在两个日期之间的行 - 让我们说11/07/2009和29/08/2014,怎么做?
我试过
SELECT * FROM attr WHERE time_added between '11/7/2009' AND '29/8/2014'
但它无法正常工作。任何伟大的将是伟大的?
答案 0 :(得分:1)
首先,建议使用MySQL的DATE类型作为日期,选择日期范围将非常简单有效。但是如果你有自己的理由使用字符串类型(就像你正在使用特定的日历而你没有转换器),那么你应该考虑以下几点:
结果我为您提供以下解决方案:
使用YYYYMMDD格式保存日期。选择查询将类似于:
SELECT *, DATE_FORMAT(time_added, '%d/%m/%Y') AS time_added2 FROM attr
WHERE time_added between '20090711' AND '20140829';
如果您无法更改数据库,那么以下查询将适用于现有数据库(以dd / mm / yyyy格式保存的日期):
SELECT * FROM attr WHERE
CONCAT(SUBSTR(time_added, 7, 4), SUBSTR(time_added, 4, 2), SUBSTR(time_added, 1, 2))
BETWEEN '20090711' AND '20140829';