【設計環境】
サーバー:Windows10Pro + XAMPP
SQLサーバー:MariaDB 10.3.15
下記のSQL文について、お知恵を拝借いただきたく存じます。
CASE WHEN desired_date = '1970-01-01' THEN NULL WHEN desired_date < '$toyear' THEN date_format(desired_date,'%y/%c/%e') WHEN desired_date > '$foryear' THEN date_format(desired_date,'%y/%c/%e') ELSE date_format(desired_date,'%c/%e') END
上記SQL文は、PHPのPDOでデータを抽出する際の用いている部分です。
やりたいことは
0. desired_dateが「1970-01-01」のときは「NULL」を代入
0. desired_dateが去年の大晦日以前のとき、desired_dateのフォーマットを『y/c/e』に変換
0. desired_dateが来年の正月以降のとき、desired_dateのフォーマットを『y/c/e』に変換
0. desired_dateが『今年(上記以外)』の時、desired_dateのフォーマットを『c/e』に変換
です。
PHPを利用して抽出する際には、『今年』の定義方法を
$toyear = date('Y') - 1 . '-12-31'; // 去年の大晦日 $foryear = date('Y') + 1 . '-01-01'; // 来年の正月
と定義していたため、区別方法を『来年の正月』と『去年の大晦日』で切り分けできていました。
これらの部分をSQLテーブルの「ビュー」として利用できないかと思っています。
そうすればPHP構文を実行内容を簡略化できると思います。
上記ビューの分岐条件部分以外はうまく動作しているため、これらを元に「テーブルビュー」が作成できれば、レコード自体の件数が毎月平均20万件あっても、PHP処理よりもSQL言語による集計を行ったほうが処理速度を向上できるのではないかと思っています。
SQL文を使った『来年の正月』と『去年の大晦日』の代入方法をご教授いただきたく、お願いいたします。