SELECT
如果日期格式是特定日期的行,如何Y-m-d H:i:s
?
即我想选择如下行:
WHERE DATE(datet) = '2013-08-07'
但价值观是:2013-08-07 11:23:45
你自己有解决方案:
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(点击“查看执行计划”查看索引是如何使用的)。
您可以使用以下查询尝试执行以下查询:
SELECT * FROM `YOUR TABLE` WHERE DATE(`YOUR FIELD`) = DATE("2013-08-07");
或者
SELECT * FROM `YOUR TABLE` WHERE `YOUR FIELD` LIKE "%2013-08-07%";
像这样使用
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