0

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

即我想选择如下行:

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

但价值观是:2013-08-07 11:23:45

4

3 回答 3

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(点击“查看执行计划”查看索引是如何使用的)。

于 2013-08-08T10:52:28.220 回答
0

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

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

或者

SELECT * FROM `YOUR TABLE` WHERE `YOUR FIELD` LIKE "%2013-08-07%";  
于 2013-08-08T09:35:24.793 回答
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

于 2013-08-08T09:26:07.870 回答