mysql 计算两个时间 相差 多少小时,多少分钟,多少秒
格式化成 HH:MM:ss
原因: TIMEDIFF,TIME_FORMAT 极限值 溢出
来看看错误
[img]http://dl2.iteye.com/upload/attachment/0126/5696/92f4fa62-d889-3bde-b525-1022ca3e1e01.png[/img]
Data truncation: Truncated incorrect time value: '860:19:15.000000';
一般数据可以使用
TIMEDIFF, TIME_FORMAT
如果计算的两个时间差 超过 30天左右
使用 TIMESTAMPDIFF
由于 TIME_FORMAT 也有极限值,所以不能使用这个函数了
只能自己干
%60
再来看看 TIMEDIFF, TIME_FORMAT 极限值 838:59:59
这两个是时间 正确相差
'2017-08-16 14:22:32','2017-07-11 18:03:17'
这么多小时 分钟 秒数
860:19:15
格式化成 HH:MM:ss
原因: TIMEDIFF,TIME_FORMAT 极限值 溢出
来看看错误
[img]http://dl2.iteye.com/upload/attachment/0126/5696/92f4fa62-d889-3bde-b525-1022ca3e1e01.png[/img]
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