如何让MySQL TIMESTAMPDIFF返回带小数的小时值(如9.5)?
MySQL计算精确小时差(含小数)的解决办法
TIMESTAMPDIFF(HOUR, '07:00:00', '16:30:00')返回9是因为这个函数会向下取整,只保留整数小时部分,忽略了30分钟的余数。要得到9.5这种带小数的精确小时差,有两种可靠方法:
- 计算分钟差再除以60:
计算逻辑:总分钟数570除以60,直接得到9.5。SELECT TIMESTAMPDIFF(MINUTE, '07:00:00', '16:30:00') / 60; - 转成秒数再除以3600:
先通过SELECT TIME_TO_SEC(TIMEDIFF('16:30:00', '07:00:00')) / 3600;TIMEDIFF得到时间差09:30:00,再用TIME_TO_SEC转成34200秒,除以3600后得到9.5。
- 计算分钟差再除以60:
你之前用
TIMEDIFF得到9.3是因为MySQL把时间格式09:30:00直接转成数字时,会解析为9.30,显示时简化成了9.3,这并不是真正的小数小时,所以不能直接用这种方式计算。
内容的提问来源于stack exchange,提问作者Cesar Villaseñor
相关产品推荐
相关产品推荐

