2016-12-02 67 views
0

我得到一個SQL在laravel這樣子句之間Laravel返回null

$scheduleMap=array("schedule_id"=>$scheduleId); 
$scheduleConsume=DB::connection("mysql_report")->table("xxx") 
->where($scheduleMap) 
->whereBetween(DB::Raw("TO_DAYS(FROM_UNIXTIME(report_time))"),array(DB::Raw("TO_DAYS('".$startDate."')"),DB::Raw("TO_DAYS('".$startDate."')"))) 
->select(DB::Raw("SUM(imp_num) as imp_num")) 
->first(); 

我打印SQL作爲

select SUM(imp_num) as imp_num from `xxx` 
where TO_DAYS(FROM_UNIXTIME(report_time)) 
between TO_DAYS('2016-11-05') 
and TO_DAYS('2016-11-12') 

然後我嘗試在Navicat運行SQL,它工作得很好,但在laravel,它返回null。 我無法理解!我現在必須使用whereRaw。

+0

report_time是UNIXTIME –

+0

可以包括帶有示例數據的數據結構 – Beginner

+0

作爲一個說明,你可能想在本地'DATETIME'領域所有的日期/時間值,因爲轉換的性能損失可能非常高。 – tadman

回答

0

試試這個:)

$scheduleConsume = DB::connection("mysql_report") 
        ->table('xxx') 
        ->where('schedule_id', $scheduleId) 
        ->whereBetween(
         DB::Raw("TO_DAYS(FROM_UNIXTIME(report_time))"), [ 
          DB::Raw("TO_DAYS('".$startDate."')"),DB::Raw("TO_DAYS('".$startDate."')") 
         ] 
        ) 
        ->select(DB::Raw("SUM(imp_num) as imp_num")) 
        ->first();