Laravel时差总和

时间:2016-01-29 13:43:34

标签: php laravel laravel-5 eloquent

我有一张基本表格,可以记录员工的所有登录和退出。

我正在使用laravel作为我的后端,我正在努力如何在现场获得总小时数。

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();

如何在该日期范围内输出网站上的总小时数?

1 个答案:

答案 0 :(得分:1)

有两种方法可以解决这个问题

  1. 使用Carbon请参阅Difference

    上的文档

    在他们的网站上有很多这方面的例子

  2. 假设您使用MySQL使用timestampdiff

    SELECT TIMESTAMPDIFF(HOUR,' 2003-02-01',' 2003-05-01 12:05:55');

    您可以使用Laravel中的RAW查询执行此操作,例如

    $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();
    
  3. 警告:我还没有对上述内容进行测试,但应该可以使用。