• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

MySQL的timeDiff测量返回意想不到的结果

mysql 来源:Aphire 4次浏览

请考虑以下查询:MySQL的timeDiff测量返回意想不到的结果

SELECT submitted_time FROM jobs WHERE timediff(NOW(), submitted_time) < '24:00:00' 

我希望这回有包含时间戳,这是过去24小时内的“submitted_time”列中的所有行,不过我我收到了如下结果:

2017-01-18 14:58:34 
2017-01-16 14:58:34 

如果我运行查询SELECT NOW()我得到2017-01-25 18:58:32

这似乎是正确的。

什么是陌生人还是那个我在DB更近的行如:

2017-01-24 15:17:13 

正在被退回

我希望我做出了一个明显的错误,有人可以指出,而不是开始疯狂下降。


===========解决方案如下:

只要是明确的,最简单和可能最高效的处理这种方式

SELECT submitted_time FROM jobs WHERE submitted_time > DATE_ADD(NOW(), INTERVAL -1 DAY); 

(根据链接我在评论中提供)这应该是所有的工作在过去的24小时内,从字面上提交在查询发布的那一刻。

对于此查询,这可能对您并不重要,但是无论何时将函数应用于表中的列,您可能拥有的任何索引都无法使用,因为数据库必须在每个值上运行函数表之前可以执行比较。

使用此方法可以计算出可比较的日期时间,并且mysql将使用submitted_time上的索引进行比较,假定该列已进行了适当索引。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)