在下图中,
SEC_TO_TIME(SUM(TIME_TO_SEC(talktime)))
值在右侧
SUM(TIME_TO_SEC(talktime))
在左边。
SEC_TO_TIME(SUM(TIME_TO_SEC(talktime)))
给出的最后一个值是838:59:59
我尝试了 echo gmdate("H:i:s", 4874010);
。但这也有限制86,400。
请你帮我转换大量的秒数到H:i:s
格式。
答案 0 :(得分:3)
time
类型有溢出。我认为MySQL documentation在限制上非常明确:
MySQL以'HH:MM:SS'格式检索并显示
TIME
值(或 'HHH:MM:SS'格式表示大小时值)。TIME
值的范围可以是 '-838:59:59'到'838:59:59'。
编辑:
您可以手动转换秒数:
select concat_ws(':',
floor(SUM(TIME_TO_SEC(talktime)) / 3600),
lpad(mod(floor(SUM(TIME_TO_SEC(talktime) / 60)), 60), 2, '0'),
lpad(mod(SUM(TIME_TO_SEC(talktime)), 60), 2, '0')
)
答案 1 :(得分:1)
在PHP中,您可以使用内置的DateTime类进行此类操作。
示例:
$seconds = 4874010;
echo DateTime::createFromFormat("!d","1")->diff(new DateTime("@$seconds"))->format("%a days, %h hours, %m minutes, %s seconds");
输出:
56天,4小时,1分30秒