Laravelでは日付・年・月・日・時間で絞り込みするメソッドが用意されています。
datetime型などは日付だけ指定すると思い通りに検索できないときがあったりするのですごくありがたいですね。
日付で検索
// 日付で検索
DB::table(テーブル名)->whereDate(カラム名, 'yyyy-mm-dd')->get();
年で検索
// 年で検索
DB::table(テーブル名)->whereYear(カラム名, 'yyyy')->get();
月で検索
// 月で検索
DB::table(テーブル名)->whereMonth(カラム名, 'mm')->get();
日で検索
// 日で検索
DB::table(テーブル名)->whereDay(カラム名, 'dd')->get();
時間で検索
// 時間で検索
DB::table(テーブル名)->whereTime(カラム名, 'hh:ii:ss')->get();
時間指定だけ1点注意点がありました。
6時とか1桁の時間を指定する場合、06:00:00のように先頭ゼロ埋めしないと検索が有効にならない現象を確認しました。
時間指定する場合は必ずhh:ii:ssで桁指定まで正確に記述する必要があります。
比較演算子も使える
// 指定した日にち以上31日までのデータを検索。年月は影響しない。
DB::table(テーブル名)->whereDay(カラム名, '>=', 'dd')->get();