doutuo1908 2016-10-07 23:14
浏览 239

比较yii2中的两个时间戳值

I have a model that compares data from db by checking if the data registered on time falls between today and yesterday's midnight but its returning an error

This is the code:

 $hour = 12;
    $today = strtotime($hour . ':00:00'); //returns the value of todays midnight
    $yesterday = strtotime('-1 day', $today); //yesterday midnight


  $query = TodoTruckChecklist::find()
        ->leftJoin('truck', 'todo_truck_checklist.truck_id = truck.id')
        ->where('truck.truck_status = 6')
        ->andWhere('todo_truck_checklist.done_at='.$id)

        ->andWhere(strtotime('todo_truck_checklist.registered_on')< $today)
        ->andWhere(strtotime('todo_truck_checklist.registered_on')> $yesterday)
           ;

    var_dump($query->all());

The values of reg_on is a datetime field which values are stored in the form of

D-M-Y H:M:S

The error returned is

SQLSTATE[42000]: Syntax error or access violation:
The SQL being executed was: SELECT `todo_truck_checklist`.* FROM 
`todo_truck_checklist` LEFT JOIN `truck` ON todo_truck_checklist.truck_id = 
 truck.id WHERE (((truck.truck_status = 6) AND 
 (todo_truck_checklist.done_at=2)) AND (1)) AND ()//this has error

Where am i going wrong

  • 写回答

1条回答 默认 最新

  • 普通网友 2016-10-08 06:39
    关注

    I hope this will help you.

      $query = TodoTruckChecklist::find()
        ->leftJoin('truck', 'todo_truck_checklist.truck_id = truck.id')
        ->where(['truck.truck_status' => 6])
        ->andWhere(['todo_truck_checklist.done_at'=>$id])
        ->andWhere(['between','todo_truck_checklist.registered_on',$yesterday, $today])
        ->all();
    
    评论

报告相同问题?