datetime型では
年-月-日 時:分:秒 の形式で格納される → 2008-05-31 00:00:00
SQL構文ではbetween などで 以上以下と記載すれば可能だが、短く抽出比較が可能です
WHERE DATE_FORMAT(billing_date, '%Y%m') = '200805'
が一般的なSQLです
Laravelの場合は便利であり
日時比較 の場合は下記が準備されている
日時の比較を行う際にも、Laravelのクエリビルダには専用のメソッドが用意されています。
whereDate / orWhereDate
日付比較にはwhereDate()メソッドを使います。
$data = $sale->whereDate('updated_at', '2018-03-21')->get();
whereMonth / orWhereMonth
月の比較には、whereMonth()メソッドを使います。
$data = $sale->whereMonth('updated_at', 2)->get();
whereDay / orWhereDay
日付の値そのものとの比較にはwhereDay()メソッドを使います。
$data = $sale->whereDay('updated_at', 25)->get();
whereYear / orWhereYear
年の比較には、whereYear()メソッドを使います。
$data = $sale->whereYear('updated_at', 2018)->get();
whereTime / orWhereTime
時間の比較には、whereYear()メソッドを使います。
$data = $sale->whereTime('updated_at', '<', '12:00')->get();
通常ではDATE_FORMAT()しなければいけないところをこうしてメソッド一つで実現できてしまうのはとても便利です。
今回は
$data = $sale->whereYear('billing_date', 2008)->whereMonth('billing_date', 5)->get();
で解決できた。