2016-01-29 3 views
1

У меня есть базовая таблица, которая фиксирует все вход и выход из персонала.Laravel Time Разница Сумма

Я использую laravel для своего back-end и им трудно, как получить общее количество часов на сайте.

ID | in_time | out_time | in_date | out_date 
1 | 21:22:49 | 21:46:05 | 2016-01-28 | 2016-01-28 
2 | 08:12:12 | 14:12:01 | 2016-01-28 | 2016-01-28 

Смотрите мой запрос до сих пор

$date1 = '2015-01-28'; 
$date2 = '2015-01-28'; 

$attendancehours = DB::table('staff_attendances')->whereBetween('in_date', array($date1, $date2))->where('id', $sID) 
     ->get(); 

Как бы выход общее количество часов на месте для этого DATERANGE?

+2

Не ответ на ваш вопрос, но вам может быть интересно узнать, что Laravel поставляется с [Carbon] (http://carbon.nesbot.com/docs/), единственной целью которого является форматирование дат и, как правило, с ними легче работать. – Fester

ответ

1

Два способа сделать это являются

  1. Использование углерода содержится в документации по Difference

    Множество примеров этого на их сайте

  2. Предполагая, что вы используете использовать MySQL timestampdiff

    SELECT TIMESTAMPDIFF (ЧАС, '2003-02-01', '2003-05-01 12:05:55');

    Вы можете сделать это с помощью RAW запроса в Laravel что-то вроде

    $attendancehours = DB::select(
        DB::RAW('TIMESTAMPDIFF(HOUR,CONCAT(in_date," ",in_time),CONCAT(out_date," ",out_time)'))-> 
        table('staff_attendances')-> 
        whereBetween('in_date', array($date1, $date2))-> 
        where('id', $sID) 
        ->get(); 
    

Внимание: Я не тестировал выше, но должно работать.

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