中の人
【laravel oracle】date型の年月日等でデータを検索する
公開: 2023-04-18 15:47
更新: 2023-04-24 00:51
laravel
oracle
TO_CHAR
queryBuilder
こんにちは!
中の人です。
個人的なメモです。
oracleのdate型の中から
・2020年のデータを取得したい
・4月のデータを取得したい(年日は関係ない)
・1日のデータを取得したい(年月は関係ない)
みたいな感じでデータを検索する方法です。
(
20230420追記
)
やり方
$yyyy = '2020';
$accept = DB::table('HOGE')
->whereRaw("TO_CHAR(CREATE_DATE, 'YYYY') = ?", [$yyyy])
->get();
こんな感じです。
月の場合は 'YYYY' => 'MM'
日の場合は 'YYYY' => 'DD'
に変更すれば所得できます。
上記参考リンクを見てみると、その他元号の略称とかいろいろ検索できるみたいです。
へー(゚∀゚ )
ちなみに
TO_CHARはdate型を文字列に変換しているので、例えば
2023-04-14 10:07:57.000
こんなデータから月で検索しようとして
$mm = '4'; // 👈 頭に0がない
$accept = DB::table('HOGE')
->whereRaw("TO_CHAR(CREATE_DATE, 'MM') = ?", [$mm])
->get();
頭に'0'がついてないと取得できません。
また、
$mm = '4';
$accept = DB::table('HOGE')
->whereRaw("TO_CHAR(CREATE_DATE, 'MM') = :mm", ['mm' => $mm])
->get();
この書き方もエラーになってできませんでした。
終わりに
乙!
通信エラーが発生しました。