2015-05-22 69 views
0

好日子,如何查詢只在laravel whereBetween()

林混淆的評估僅日期部分,忽略時間部分上laravel的whereBetween功能我怎麼能執行一個查詢的日期部分。

$startDate = '2015-04-31'; 
$endDate = '2015-05-01'; 
$totalDebit = DB::table('x_general_transactions_details') 
      ->whereBetween('date_at', array($startDate,$endDate)) 
      ->where('account_xid',$account->xid) 
      ->sum('debit'); 

這裏的問題是,沒有被列入「2015年5月1日」所有的事務,因爲它的時間不是00:00:00這就是爲什麼爲了得到「2015-05交易-01'我必須添加一天到我的$endDate變量。

回答

1

試試這個:

$startDate = Carbon::createFromFormat('Y-m-d','2015-04-31'); 
$endDate = Carbon::createFromFormat('Y-m-d','2015-05-1'); 
$totalDebit = DB::table('x_general_transactions_details') 
      ->whereBetween('date_at', array($startDate,$endDate)) 
      ->where('account_xid',$account->xid) 
      ->sum('debit'); 

這段代碼計算從2015年4月31日凌晨00:00:01所有交易以2015年5月1日凌晨00:00:01 如果你想包括在2015年5月1日的所有交易包括使用此代碼爲結束時間

$endDate = Carbon::createFromFormat('Y-m-d H:i:s','2015-05-1' . '23:59:59'); 
+0

謝謝你的回答@ user1873569 ..我想這是解決問題的最簡單方法:) – melvnberd

1

添加時間到你的日期,它會爲你節省一天。

$startDate = '2015-04-31 00:00:00'; 
$endDate = '2015-05-01 23:59:59'; 
1

我個人只投數據庫字段日期:

$totalDebit = DB::table('x_general_transactions_details') 

     ->whereBetween(DB::raw('DATE(date_at)'), array($startDate,$endDate)) 
         ^^^^^^^^^^^^^^^^^^^^^^^^ 

     ->where('account_xid',$account->xid) 
     ->sum('debit');