如果日期格式为SELECT
,如何Y-m-d H:i:s
某一天的行?
即。我想选择像:
这样的行WHERE DATE(datet) = '2013-08-07'
但值为:2013-08-07 11:23:45
答案 0 :(得分:1)
您自己有解决方案:
SELECT * FROM tbl WHERE DATE(datet) = '2013-08-07'
假设datet
是DATETIME
列,这是最有效的方式,因为MySQL可以使用datet
上的潜在索引来处理WHERE
条款。
根据您的MySQL WHERE datet LIKE '2013-08-07%'
版本,也可以通过使用索引来完成工作(因为模式的最左边部分是常量)。但我认为这不太优雅。
编辑:事实上,通过测试,它似乎也能有效地与VARCHAR
/ CHAR
列一起使用。请参阅http://sqlfiddle.com/#!8/1c2da/1(单击“查看执行计划”以查看索引的使用方式)。
答案 1 :(得分:0)
像这样使用
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
答案 2 :(得分:0)
您可以在查询后尝试使用以下查询执行此操作:
SELECT * FROM `YOUR TABLE` WHERE DATE(`YOUR FIELD`) = DATE("2013-08-07");
OR
SELECT * FROM `YOUR TABLE` WHERE `YOUR FIELD` LIKE "%2013-08-07%";