Retrieve data between two dates in laravel

33,955

Solution 1

If you can use Carbon then this code will work fine for you.

$dateS = new Carbon('first day of January 2016');
$dateE = new Carbon('first day of November 2016');
$result = ModelName::whereBetween('created_at', [$dateS->format('Y-m-d')." 00:00:00", $dateE->format('Y-m-d')." 23:59:59"])->get();

Or you can check the issue by debugging query using DB::enableQueryLog(); and DB::getQueryLog(); functions like

DB::enableQueryLog();
$dateS = new Carbon('first day of January 2016');
$dateE = new Carbon('first day of November 2016');
$result = ModelName::whereBetween('created_at', [$dateS->format('Y-m-d')." 00:00:00", $dateE->format('Y-m-d')." 23:59:59"])->get();
var_dump($result, DB::getQueryLog());

Solution 2

Try to do something like this:

$date1 = Carbon::today()->toDateString();
$date2 = Carbon::today()->toDateString();

$myModel = MyModel::find(1);
$myModel->whereBetween('created_at', [$date1, $date2]);
$myModel->get();

Of course, you will need to change the dates.

Share:
33,955
Arunwij
Author by

Arunwij

Updated on July 21, 2022

Comments

  • Arunwij
    Arunwij almost 2 years

    I am using an eloquent query to retrieve data from a table. The table columns look like this:

    id   started_at   finished_at   
    1    2016-06-01   2016-06-30  
    2    2016-05-03   2016-05-28  
    

    What I want to do is, given a $date (ex: 2016-06-18 ) and get the data of the row, that the $date between started at and finished_at columns.

    I have found whereBetween clauses in Laravel documentation, but I do not have an idea to use it correctly.