格式化成 HH:MM:ss
原因: TIMEDIFF,TIME_FORMAT 极限值 溢出
来看看错误

Data truncation: Truncated incorrect time value: '860:19:15.000000';
一般数据可以使用
TIMEDIFF, TIME_FORMAT
(CASE WHEN LENGTH(soi.fsOrderTime)=0 OR LENGTH(soi.fsBacktime)=0 OR LENGTH(soi.fsCreateTime)=0 THEN NULL ELSE TIME_FORMAT(TIMEDIFF(soi.fsBacktime,soi.fsCreateTime),'%T') END) AS fs_take_time
如果计算的两个时间差 超过 30天左右
使用 TIMESTAMPDIFF
由于 TIME_FORMAT 也有极限值,所以不能使用这个函数了
只能自己干
%60
CONCAT( IF( ( TIMESTAMPDIFF( HOUR, soi.fsCreateTime, soi.fsBacktime ) < 10 ), CONCAT( '0',TIMESTAMPDIFF( HOUR, soi.fsCreateTime, soi.fsBacktime ) ), ( TIMESTAMPDIFF( HOUR, soi.fsCreateTime, soi.fsBacktime ) ) ), ':', IF( ( TIMESTAMPDIFF( MINUTE, soi.fsCreateTime, soi.fsBacktime ) % 60 < 10 ), CONCAT( '0',TIMESTAMPDIFF( MINUTE, soi.fsCreateTime, soi.fsBacktime ) % 60 ), ( TIMESTAMPDIFF( MINUTE, soi.fsCreateTime, soi.fsBacktime ) % 60 ) ), ':', IF( ( TIMESTAMPDIFF( SECOND, soi.fsCreateTime, soi.fsBacktime ) % 60 < 10 ), CONCAT( '0' ,TIMESTAMPDIFF( SECOND, soi.fsCreateTime, soi.fsBacktime ) % 60 ), ( TIMESTAMPDIFF( SECOND, soi.fsCreateTime, soi.fsBacktime ) % 60 ) ) ) END ) AS fs_take_time,
再来看看 TIMEDIFF, TIME_FORMAT 极限值 838:59:59
SELECT TIME_FORMAT(TIMEDIFF('2017-08-16 14:22:32','2017-07-11 18:03:17'),'%T')
这两个是时间 正确相差
'2017-08-16 14:22:32','2017-07-11 18:03:17'
这么多小时 分钟 秒数
860:19:15