MySQL如何将TIMEDIFF返回的H:i:s格式时间转为数字小时格式
解决TIMEDIFF结果转小数小时的问题
嘿,这个需求我之前处理过不少!你可以借助MySQL的TIME_TO_SECONDS()函数,把时间差转成总秒数后再除以3600(1小时对应的秒数),就能直接得到你想要的小数格式小时数了。
拿你给出的例子来说:
date1=2018-04-05 13:10:00,date2=2018-04-05 14:40:00,TIMEDIFF计算结果为01:30:00
用下面的SQL就能直接得到1.5:
SELECT TIME_TO_SECONDS(TIMEDIFF(date2, date1)) / 3600 AS hours_diff;
原理很直观:TIME_TO_SECONDS('01:30:00')会把时间转成5400秒,5400除以3600刚好等于1.5。同理,01:45:00会被转成6300秒,6300÷3600=1.75,完全符合你的预期。
如果你的表中可能存在date1或date2为NULL的情况,还可以加个IFNULL做兜底处理,避免返回NULL值:
SELECT IFNULL(TIME_TO_SECONDS(TIMEDIFF(date2, date1)) / 3600, 0) AS hours_diff FROM your_table;
内容的提问来源于stack exchange,提问作者Chintan7027
相关产品推荐
相关产品推荐

