2015-02-26 5 views
0

У меня есть поле в моей таблице, в котором есть время для определенного действия. Записи, как 00:01:29
00:02:12
00:00:45 и т.д ...Рассчитать общее время в секундах

Теперь я хочу, чтобы получить сумму всех времени в секундах.

Я попытался это:
$time_for_correct_ans = Testlog::where('token', $exists->token)->where('correct', 1)->sum('answering_time');

Но он принял 00:01:29 в 129 seconds, что неправильно. Есть ли лучший способ сделать это?

Я использую Laravel и MySQL.

+0

Используйте http://php.net/manual/en/function.strtotime.php и получить секунды, добавьте результат и ... Вы знаете сделку. –

+0

@ NicolásCarlo Нравится? '$ time_for_correct_ans = Testlog :: where ('токен', $ exists-> токен) -> где ('correct', 1) -> sum (strtotime ('answering_time'));' – user1012181

+0

Вы должны хранить время как целые числа (секунды) вместо строк. Гораздо проще сделать арифметику именно так. – Dave

ответ

2

Вы можете использовать MySQLs TIME_TO_SEC:

$time_for_correct_ans = Testlog::selectRaw('SUM(TIME_TO_SEC(answering_time)) AS total') 
           ->where('token', $exists->token) 
           ->where('correct', 1) 
           ->pluck('total'); 
+0

Спасибо, что это сработало. – user1012181

Смежные вопросы