MySQL函数在时差计算上达到限制

标签 mysql datetime

我已经使用 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/

相关文章:

mysql - 查看由factory_girl在mysql数据库中创建的数据库条目

ruby-on-rails - Angular JS 和 Rails 中的时区偏移

javascript - 如何获得星期几和一年中的月份?

带有边界框的MYSQL空间点

php - 选择连接 MYSQL

php - laravel 5.6菜单表如何链接不同的页面部分

php mysql 只返回第一条记录

linux - Perl DateTime::Locale::en 错误

datetime - 这是什么日期时间格式?

java - Spring /hibernate 。在Web服务中将字符串转换为具有相同时区的日期并插入到SQL中