DD-MM-YYYY日期格式和MySQL

时间:2010-08-01 09:43:42

标签: php mysql

我有一个MySQL表:

dateStarted     varchar(45)
dateEnded       varchar(45)

示例:

alt text http://img8.imageshack.us/img8/765/dated.jpg

有varchar(我不知道为什么以前的软件工程师使用过它)。

我可以使用varchar类型在MySQL中的两个日期之间进行搜索吗?

3 个答案:

答案 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格式吗?完成后,将它转换为日期并进行比较会相当容易。