我已经使用 phpmyadmin 为 mysql 创建了一个函数(工作正常)。它以天、小时、分钟和秒为单位计算两个日期之间的差异。输出可能是这样的:
5 天 16 小时 24 米 56 秒
提到的功能:
CREATE FUNCTION time_full(A DATETIME, B DATETIME) RETURNS VARCHAR(30)
BEGIN
RETURN CONCAT(FLOOR(HOUR(TIMEDIFF(A,B))/24),'d '
,MOD(HOUR(TIMEDIFF(A,B)),24), 'h '
,MINUTE(TIMEDIFF(A,B)),'m '
,SECOND(TIMEDIFF(A, B)),'s');
END
因此,在创建它并检查它是否正常工作后,我决定让它计算两个日期之间的较大时间间隔,大约 2 个月左右,但它可以计算的最大时间间隔是:
34 天 22 小时 59 米 59 秒
有人知道为什么吗? (这是个大问题)
自从使用查询函数后,我就知道发生了一些事情:
SEC_TO_TIME(TIMESTAMPDIFF(SECOND, created, sol_provided)) AS timeDiff
我遇到了麻烦,因为它可以计算出的最大小时差大约是 848 小时左右。
最佳答案
来自 MySQL 网站 ( http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timediff )
TIMEDIFF() 返回的结果被限制在 TIME 值允许的范围内
然后,如果您继续阅读时间部分,( http://dev.mysql.com/doc/refman/5.5/en/time.html )
TIME 值的范围可能从“-838:59:59”到“838:59:59”。小时部分可能很大,因为 TIME 类型不仅可以用来表示一天中的时间(必须小于 24 小时),还可以用来表示耗时或两个事件之间的时间间隔(可能远大于24小时,甚至负数)。
关于MySQL函数在时差计算上达到限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20555479/