您的位置:首页 > 数据库 > MySQL

mysql的一个日常用法的BUG

2014-02-25 17:20 337 查看
一直以来,使用mysql,在统计时间差时,都是使用TIME_TO_SEC(timediff(d2,d1))的方式来处理。

今天偶然发现,该用法,存在BUG,例如:

select
TIME_TO_SEC(timediff('2014-02-28 10:13:35', '2013-12-28 14:03:37')) as times0,
timestampdiff(second, '2014-02-08 14:03:37', '2014-02-28 10:13:35') as times1,
TIME_TO_SEC(timediff('2014-02-28 10:13:35', '2014-02-08 14:03:37')) as times2,
timestampdiff(second, '2013-12-28 14:03:37', '2014-02-28 10:13:35') as times3


执行结果:



很明显,times0应该等于times3,times1应该等于times2,但是,实际上,times0不等于times3。

进行更多实验,你会发现,TIME_TO_SEC(timediff(d2,d1))的用法,在时间跨度达到一定的情况下,其结果都是3020399。

具体这个跨度最大值是多少,以及为什么会出现这样的结果,有待去考究,暂记备忘。

最后建议大家使用timestampdiff来进行时间差的计算。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: