2017-06-16 85 views
0

我想從這個數據庫中輸出時間和時間。 enter image description here如何從數據庫中的相同數據獲取第一個數據和最後一個數據?

所以我想要得到第一個數據和最後的數據在日期2017-06-13和2017-06-15。 我怎樣才能使用Laravel 5.3?使用這些方法>末頁() -

$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(); 
+0

與順序運行查詢的ASC和限制1,或ORDER BY DESC和限制1得到的結果。 – VK321

回答

0

試試下面的代碼。

$collection = BiometricsAttendance::where('emp_id', $emp)->whereBet‌​ween('date', [$start, $end])->groupBy('date')->orderBy('time', 'asc'); 

$timein = $collection->first(); 

$timeout = $collection->last(); 
0

您可以通過日期和時間列訂購您的表,然後用雄辯拿 - >第一()和:

+0

$ timein = BiometricsAttendance :: where(array('emp_id'=> $ emp)) - > whereBetween('date',[$ start,$ end]) - > orderBy('date','asc') - > orderBy('time','asc') - > first(); $ timeout = BiometricsAttendance :: where(array('emp_id'=> $ emp)) - > whereBetween('date',[$ start,$ end]) - > orderBy('date','asc') - > orderBy('time','desc') - > first();從這個輸出不是我想要的。第一個日期只是數據。我希望2017-06-13和2017-06-15也能輸出 – Selle

+0

做groupBy('date') - > orderBy('time','asc'),你要確保日子一直排好隊列 – btl

+0

我收到了2017-06-13和2017-06-15兩個日期的第一個數據,但是最後一個數據我不能。使用first()和last()方法僅獲取數據庫中數據的第一行和最後一行。 – Selle

1

可能這會爲你工作:

DB::table('emp') 
    ->select(DB::raw("MIN(`time`) AS `time_in`, MAX(`time`) AS `time_out`")) 
    ->where('date', '2017-06-13') 
    ->get(); 

輸出:

{ 
    time_in: "19:38:33", 
    time_out: "22:14:10" 
} 
+0

謝謝!這對我有效。非常感謝:) – Selle

+0

@Selle歡迎) –

+0

如果它適合你,然後標記爲正確的PLZ –

相關問題