PHP laravel mogodb - Filter documents with only date and only time (whereDate, whereTime)

529 Views Asked by At

composer install package jenssegers/mongodb

I have a list of documents in which there is a date field as follows

ISODate("2020-05-28T06:34:23.000Z")

how to filter out data with only date and time distinct condition

/** @var $db Jenssegers\Mongodb\Query\Builder */ $db = DB::connection('mgdb')->table('test');

$db
->whereDate('dateShot', '>=', Carbon::parse('2020-05-28'))
->whereDate('dateShot', '<=', Carbon::parse('2020-05-29'))
->whereTime('dateShot', '>=', Carbon::parse('06:00'))
->whereTime('dateShot', '<=', Carbon::parse('08:00'))

or

$db
->whereDate('dateShot', '>=', '2020-05-28')
->whereDate('dateShot', '<=', '2020-05-29')
->whereTime('dateShot', '>=', '06:00')
->whereTime('dateShot', '<=', '08:00')

or

$db
->where('dateShot', '>=', '2020-05-28 00:00:00')
->where('dateShot', '<=', '2020-05-29 23:59:59')
->whereTime('dateShot', '>=', '06:00')
->whereTime('dateShot', '<=', '08:00')

All examples above return null, with the above examples used on mysql is ok.

Thank !

1

There are 1 best solutions below

1
On

Please use whereBetween

YourModel::whereBetween('created_at', [new Carbon(2020-05-28 . ' ' . '00:00:00'), new Carbon(2020-05-28 . ' ' . '23:59:59')])
                        ->orderBy("created_at", 'desc');