这必须返回 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)) ;
这是一个错误吗?
最佳答案
This must return 1440 minutes and is working fine:
没有。可能会有夏令时变化或闰秒变化。您不能仅仅因为您认为两次应该抵消一定金额而依赖它们。
有一些奇怪的事情。
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 have a limit 中的 TIME 值可接受的值。
MySQL retrieves and displays TIME values in 'HH:MM:SS' format (or 'HHH:MM:SS' format for large hours values). TIME values may range from '-838:59:59' to '838:59:59'.
显然,您应该使用 TIMESTAMPDIFF() 和 UNIX_TIMESTAMP() 函数之一(这两个函数都返回整数),或者如果您有实际日期,则应该使用 DATEDIFF()。
关于MySQL timediff — 这是一个错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15444804/