如何在MySQL中将时间差四舍五入至最近的0.5小时?
MySQL时间差四舍五入到最近0.5小时的语法错误解决方法
你的问题出在括号不匹配——表达式末尾少了一个闭合的),这直接触发了MySQL的1064语法错误。
正确的表达式应该是:
FLOOR( ( (TIME_TO_SEC(TIMEDIFF(midnight, start)) / 3600) * 2 ) + 0.5 ) / 2
逻辑说明:
TIMEDIFF(midnight, start)计算两个时间的差值,TIME_TO_SEC()将其转为秒数后除以3600,得到以小时为单位的数值- 乘以2是把小时数转换为以0.5小时为最小单位的整数刻度(比如1.2小时→2.4,1.6小时→3.2)
- 加0.5后用
FLOOR()取整,实现四舍五入到最近的整数(2.4+0.5=2.9→取整为2;3.2+0.5=3.7→取整为3) - 最后除以2,还原回以小时为单位的0.5倍数结果
举个例子:如果时间差是1小时20分钟(约1.333小时),代入计算后会得到1.5小时,符合四舍五入到最近0.5小时的需求。
内容的提问来源于stack exchange,提问作者Walt
相关产品推荐
相关产品推荐

