You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让MySQL TIMESTAMPDIFF返回带小数的小时值(如9.5)?

MySQL计算精确小时差(含小数)的解决办法
  • TIMESTAMPDIFF(HOUR, '07:00:00', '16:30:00')返回9是因为这个函数会向下取整,只保留整数小时部分,忽略了30分钟的余数。

  • 要得到9.5这种带小数的精确小时差,有两种可靠方法:

    1. 计算分钟差再除以60:
      SELECT TIMESTAMPDIFF(MINUTE, '07:00:00', '16:30:00') / 60;
      
      计算逻辑:总分钟数570除以60,直接得到9.5。
    2. 转成秒数再除以3600:
      SELECT TIME_TO_SEC(TIMEDIFF('16:30:00', '07:00:00')) / 3600;
      
      先通过TIMEDIFF得到时间差09:30:00,再用TIME_TO_SEC转成34200秒,除以3600后得到9.5。
  • 你之前用TIMEDIFF得到9.3是因为MySQL把时间格式09:30:00直接转成数字时,会解析为9.30,显示时简化成了9.3,这并不是真正的小数小时,所以不能直接用这种方式计算。

内容的提问来源于stack exchange,提问作者Cesar Villaseñor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 07:30:48