我有一个MySQL表:
dateStarted varchar(45)
dateEnded varchar(45)
示例:
alt text http://img8.imageshack.us/img8/765/dated.jpg
有varchar(我不知道为什么以前的软件工程师使用过它)。
我可以使用varchar类型在MySQL中的两个日期之间进行搜索吗?
答案 0 :(得分:8)
不。您必须将格式更改为正确的格式。
之前的软件工程师因为无知而使用了这个。你必须纠正他的错误。
不要害怕一些额外的工作。实际上它是每个程序员工作的一部分。整个世界都没有代码,永远是完美的。常量代码改进称为refactoring
,占据了每个软件工程师的工作时间。
答案 1 :(得分:3)
SELECT
*
FROM test1
WHERE STR_TO_DATE(:date, '%d-%m-%Y') BETWEEN
STR_TO_DATE(dateStart,'%d-%m-%Y') AND
STR_TO_DATE(dateEnd,'%d-%m-%Y')
刚刚在您的数据集上尝试过此操作,它可以使用AFAICT。
但是你当然应该注意其他人给出的建议,并尽可能在时间限制内修复你前任的错误。由于施法量的增加,这在某些时候会成为一个问题。
答案 2 :(得分:0)
您需要确定两个字段所在的格式。它们是否来自UNIX纪元?它们是YYYYMMDD格式吗?完成后,将它转换为日期并进行比较会相当容易。