MySQL日期搜索MM / DD / YYYY到MM / DD / YYYY

时间:2009-08-23 22:11:21

标签: php mysql date

我在MySQL中有一个表如下所示:

date        |storenum   |views 
-------------------------------
08/21/2009  |42         |3  
-------------------------------
08/22/2009  |43         |1    
-------------------------------
08/21/2009  |43         |4  
-------------------------------
08/22/2009  |42         |22
-------------------------------

我知道这是一种非传统的日期格式,但我使用它而不是YYYY-MM-DD易于使用。然而,我必须搜索此数据库以获取两个日期之间的所有“查看记录”。一般来说它有效,但是当我从01/01/2009到01/01/2010等日期搜索时,我没有得到任何结果。

有没有人有任何建议?建设性的批评是受欢迎的。谢谢!

4 个答案:

答案 0 :(得分:3)

老实说,改变你存储日期的方式。但是为了使用你现在拥有的东西,你可以考虑使用STR_TO_DATE()将这些转换为MySQL可以使用的日期。

答案 1 :(得分:2)

你提到了易用性 - 我认为你现在试图解决的案例就是“不那么容易使用”的例子:)。

我会坚持MySQL中默认的日期格式

yyyy-mm-dd h:i:s //php's date formatting 

并使用 DATE 字段。这将解决日期问题的搜索/插入问题。虽然您需要更改一些代码来修复显示日期。

答案 2 :(得分:1)

您的date字段类型是什么?为了正确使用它应该是datedatetime,并且看到你拥有它看起来就像是将dates存储在varchar中。我是对的吗?

这也有一个优点,你可以添加索引,然后通过mysql搜索范围

我的建议是获取用户输入的内容。然后将其转换为mysql日期格式进行搜索

类似的东西:

<?php

$mysql_time = date('Y-m-d H:m:s' strotime('05/11/2008'));

$query = sprintf("SELECT * FROM sometable < '%s'", $mysql_time);

?>

答案 3 :(得分:0)

尝试使用“yyyyMMdd”格式的搜索,MySql肯定会认出它。