SQL datetime型での年月取得方法【Laravel クエリビルダ編】

オブジェクト指向

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();

で解決できた。

タイトルとURLをコピーしました