将大量秒转换为“H:i:s”格式

时间:2015-07-07 12:07:49

标签: php mysql

在下图中,

SEC_TO_TIME(SUM(TIME_TO_SEC(talktime))) 值在右侧

SUM(TIME_TO_SEC(talktime)) 在左边。

enter image description here

SEC_TO_TIME(SUM(TIME_TO_SEC(talktime)))给出的最后一个值是838:59:59

我尝试了 echo gmdate("H:i:s", 4874010); 。但这也有限制86,400。

请你帮我转换大量的秒数到H:i:s格式。

2 个答案:

答案 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秒

PHP: DateTime - Manual