[Laravel]whereBetweenで日付を期間で検索する

広告Laravel
2023年10月27日

Laravel で日付を期間で検索・・!したいことありますよね。

whereBetween

whereBetween を使います。

User::whereBetween('created_at', ['2022-01-01 00:00:00', '2022-12-31 00:00:00'])->get();

Carbon をつかう

1 ヶ月前から今日まで取りたい・・・場合は、Carbon を使って、日付を取得します。

 
$to = Carbon::today();
$from = $to->copy()->subMonths(1);
$between = [$from->format('Y-m-d 00:00:00'), $to->format('Y-m-d 00:00:00')];
 
User::whereBetween('created_at', $between)->get();

発行される SQL は以下のようになります。

select * from `users` where `created_at` between ? and ?

DATE() をつかう

日付だけで取得したい場合は、DATE() をつかいます。

 
$to = Carbon::today();
$from = $to->copy()->subMonths(1);
$between = [$from->format('Y-m-d'), $to->format('Y-m-d')];
 
User::whereBetween(DB::raw("DATE(created_at)"),  $between)->get();

発行される SQL は以下のようになります。

select * from `users` where DATE(created_at) between ? and ?

参考

10.x データベース:クエリビルダ Laravel

readouble.comreadouble.com

Illuminate\Database\Query\Builder | Laravel API

laravel.comlaravel.com