在MySQL中过滤日期

在MySQL中过滤日期,mysql,Mysql,我正在尝试将日期时间列转换为日期,并获取特定日期的所有行。但是当你尝试的时候。查询返回0行。此代码有什么问题 其中日期(arefresh\u time)=“2016-06-11”使用正确的日期格式 where date_format(`a`.`refresh_time`'%Y-%m-%d') = '2016-06-11' 使用正确的日期格式 where date_format(`a`.`refresh_time`'%Y-%m-%d') = '2016-06-11' 不要!!!在WHERE

我正在尝试将日期时间列转换为日期,并获取特定日期的所有行。但是当你尝试的时候。查询返回0行。此代码有什么问题
其中日期(
a
refresh\u time
)=“2016-06-11”

使用正确的日期格式

 where date_format(`a`.`refresh_time`'%Y-%m-%d') = '2016-06-11'

使用正确的日期格式

 where date_format(`a`.`refresh_time`'%Y-%m-%d') = '2016-06-11'

不要!!!在WHERE子句中的字段上使用函数,如@scaisEdge的答案。如果这样做,MySQL必须读取表中的所有行,并使用函数将其转换,然后进行比较。而且它永远不能使用索引

如果这样使用更好更快

样本

WHERE `a`.`refresh_time` >=  '2016-06-11 00:00:00' AND `a`.`refresh_time` <=  '2016-06-11 23:59:59';
因此MySQL可以直接使用索引来查找正确的行


您可以在选择之前使用EXPLAIN进行测试。

请勿!!!在WHERE子句中的字段上使用函数,如@scaisEdge的答案。如果这样做,MySQL必须读取表中的所有行,并使用函数将其转换,然后进行比较。而且它永远不能使用索引

如果这样使用更好更快

样本

WHERE `a`.`refresh_time` >=  '2016-06-11 00:00:00' AND `a`.`refresh_time` <=  '2016-06-11 23:59:59';
因此MySQL可以直接使用索引来查找正确的行


您可以在选择之前使用EXPLAIN进行测试。

如果您显示数据和实际查询(或两者的合理传真),这会有所帮助。看起来不会太糟糕。他的代码中有反勾号,因此使问题的格式变得糟糕。也许你缺少这些数据,或者你是英国人,正在寻找11月6日的数据。如果你展示数据,这会有所帮助,而实际的查询(或两者的合理传真)看起来不会太糟糕。他的代码中有反勾号,因此使问题的格式变得糟糕。也许你缺少这些数据,或者你是英国人,在寻找11月6日你感谢我的东西。。如果你认为我的回答有用,你可以根据你对我的感谢程度来评价。。如果你认为我的答案有用,你可以给它打分。。