0

这必须返回 1440 分钟并且工作正常:

select abs(round((TIME_TO_SEC(TIMEDIFF('2013-03-13 10:00', 
                                       '2013-03-14 10:00'))/60),2)) ;

(2) 相同函数日期更改为 2天数返回50339.98

select abs(round((TIME_TO_SEC(TIMEDIFF('2013-03-12 10:00', 
                                       '2013-03-14 10:00'))/60),2)) ;  

(3) 同样的函数,日期改为 4天,答案是50339.98

select abs(round((TIME_TO_SEC(TIMEDIFF('2013-03-10 10:00', 
                                       '2013-03-14 10:00'))/60),2)) ; 

这是一个错误吗?

4

1 回答 1

1

这必须返回 1440 分钟并且工作正常:

不会。可能会有夏令时更改或闰秒更改。您不能仅仅因为您认为它们应该如此而依赖于两次被一定数量的抵消。

有什么奇怪的。

select  
    TIMEDIFF('2000-09-14 09:00', '2000-08-10 10:00'),
    TIMESTAMPDIFF(SECOND, '2000-09-14 09:00', '2000-08-10 10:00');

838:59:59,-3020400

这是不可能的。解释是MySQL中的 TIME 值对可接受的值有限制。

MySQL 以“HH:MM:SS”格式(或“HHH:MM:SS”格式用于大小时值)检索和显示 TIME 值。TIME 值的范围可以从“-838:59:59”到“838:59:59”。

显然,您应该使用 TIMESTAMPDIFF() 和 UNIX_TIMESTAMP() 函数之一,这两个函数都返回整数,或者如果您有实际日期,则使用 DATEDIFF()。

于 2013-03-16T03:50:37.077 回答