MySQL timediff — 这是一个错误吗?

标签 mysql date datediff

这必须返回 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/

相关文章:

MySQL第一行column3和第二行column2之间的日期差异

php - 根据性别隐藏/显示个人资料字段

MySQL ONLY IN() 等效子句

javascript - MooTools:获取给定一周的第一天和最后一天

mysql - 如何在表格中的任意两个日期之间进行减法?

mysql - 在响应/更新中找到日期之间最长和最快的差异

mysql - 内部加入更新

mysql - 无法对所选数据进行分组

Javascript Date() 时区不一致

sql - 在 Oracle 中减去日期 - 数字还是间隔数据类型?