我在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等日期搜索时,我没有得到任何结果。
有没有人有任何建议?建设性的批评是受欢迎的。谢谢!
答案 0 :(得分:3)
老实说,改变你存储日期的方式。但是为了使用你现在拥有的东西,你可以考虑使用STR_TO_DATE()将这些转换为MySQL可以使用的日期。
答案 1 :(得分:2)
你提到了易用性 - 我认为你现在试图解决的案例就是“不那么容易使用”的例子:)。
我会坚持MySQL中默认的日期格式
yyyy-mm-dd h:i:s //php's date formatting
并使用 DATE 字段。这将解决日期问题的搜索/插入问题。虽然您需要更改一些代码来修复显示日期。
答案 2 :(得分:1)
您的date
字段类型是什么?为了正确使用它应该是date
或datetime
,并且看到你拥有它看起来就像是将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肯定会认出它。