数据库字段的持续时间之和(持续时间

问题描述 投票:-3回答:1

我的数据库字段中的时间或持续时间的SUM有问题。

假设。我有5条记录

1. 00:25:32
2. 00:08:52
3. 00:33:22
4. 00:25:30
5. 00:15:12

遍数 php.我花了很多时间,但失败了。

我已经尝试了这一点。

$time = "00:58:30";
$time2 = "00:12:35";

$secs = strtotime($time2)-strtotime("00:00:00");
$result = date("H:i:s",strtotime($time)+$secs);
echo $result;

但它不工作良好的多个记录

php datetime
1个回答
0
投票

谢谢大家。我已经解决了。我在Stackoverflow上查看了一些其他问题,我得到了我想要的答案。

SELECT  SEC_TO_TIME(SUM(TIME_TO_SEC(`SongDuration`))) AS `TimeSum` FROM `mu_forms_competition_entries`

0
投票

持续时间不是日期。明天在35:00:00是什么意思?

最接近的内置功能是 日期间隔但为了按原样使用它,你的输入数据需要重写一些内容('00:25:32' 变成 'PT00H25M32S'),反正我觉得它不支持加法。

自己进行计算并不难(为了简洁起见,省略了错误检查和负倍数)。

function timeToSeconds(string $time): int
{
    [$h, $m, $s] = explode(':', $time);
    return $s + 60 * $m + 3600 * $h;
}

function secondsToTime(int $seconds): string
{
    return sprintf(
        "%02d:%02d:%02d",
        floor($seconds / 3600),
        floor(($seconds / 60) % 60),
        $seconds % 60
    );
}

$times = [
    '00:25:32',
    '00:08:52',
    '00:33:22',
    '00:25:30',
    '00:15:12',
];
$total = 0;
foreach ($times as $time) {
    $total += timeToSeconds($time);
}
echo secondsToTime($total);

如果你允许改变数据库查询,可能会有一个内置的功能,可以直接从SQL转换为秒。例如,MySQL有 TIME_TO_SEC().

最后但并非最不重要的是,如果你的数据库真的有一个 Time 列类型,也许它允许 SUM() 它。

© www.soinside.com 2019 - 2024. All rights reserved.