代码之家  ›  专栏  ›  技术社区  ›  Chris Bier

mysql日期搜索mm/dd/yyyy到mm/dd/yyyy

  •  0
  • Chris Bier  · 技术社区  · 17 年前

    我在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,以便于使用。然而,我必须搜索这个数据库来获取两个日期之间的所有“查看记录”。一般来说,它是有效的,但是当我从2009年1月1日到2010年1月1日这样的日期进行搜索时,我没有得到任何结果。

    有人有什么建议吗?欢迎有建设性的批评。谢谢!

    4 回复  |  直到 17 年前
        1
  •  3
  •   Sampson    17 年前

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

        2
  •  2
  •   bisko    17 年前

    您提到了易用性——我认为您现在试图解决的情况是“不太容易使用”:的一个例子。

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

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

    和使用 日期 领域。这将解决日期搜索/插入问题。尽管您需要更改一些代码来修复显示日期的问题。

        3
  •  1
  •   Gabriel Sosa    17 年前

    你是什么 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);
    
    ?>
    
        4
  •  0
  •   IgorS    17 年前

    尝试使用“yymmdd”格式的搜索,MySQL肯定会识别它。

    推荐文章