【问题标题】:Mysql select where date = now if Y-m-d H:i:sMysql select where date = now if Y-m-d H:i:s
【发布时间】:2013-08-08 09:21:14
【问题描述】:

如果日期格式为Y-m-d H:i:s,如何SELECT特定日期的行?

即我想选择如下行:

WHERE DATE(datet) = '2013-08-07'

但值为:2013-08-07 11:23:45

【问题讨论】:

标签: mysql date select format


【解决方案1】:

您自己有解决方案:

SELECT * FROM tbl WHERE DATE(datet) = '2013-08-07'

假设datetDATETIME 列,这是最有效的方法,因为那时MySQL 将能够使用datet 上的潜在索引来处理WHERE 子句。

根据您的 MySQL WHERE datet LIKE '2013-08-07%' 版本,也可能通过使用索引来完成这项工作(因为模式的最左边部分是恒定的)。但我认为这不太优雅。


编辑:事实上,通过测试看来,VARCHAR/CHAR 列也可以有效地工作。见http://sqlfiddle.com/#!8/1c2da/1(点击“查看执行计划”查看索引是如何使用的)。

【讨论】:

    【解决方案2】:

    这样使用

     SELECT DATE('2013-08-07 11:23:45');
    

    它会返回

        -> '2013-08-07'
    

    你可以使用

    WHERE DATE(datet) = DATE('2013-08-07 11:23:45')
    

    http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date

    【讨论】:

      【解决方案3】:

      您可以使用以下查询尝试执行以下查询:

      SELECT * FROM `YOUR TABLE` WHERE DATE(`YOUR FIELD`) = DATE("2013-08-07");
      

      SELECT * FROM `YOUR TABLE` WHERE `YOUR FIELD` LIKE "%2013-08-07%";  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-24
        • 1970-01-01
        • 2013-05-12
        • 2016-12-20
        • 1970-01-01
        相关资源
        最近更新 更多