【2021/05/31】今日の学習

CakePHP】 QueryBuilder と ConnectionManager

CakePHPでは、データベース接続に2つの方法がある。それが、

  • QueryBuilder(クエリビルダ)
  • ConnectionManager

これらは、
データベースから取り出してきたデータの形式が異なるので注意。

QueryBuilderでは、Queryインスタンスを利用してデータベースにアクセスし、エンティティクラスのインスタンスとして取り出す →オブジェクト型

ConnectionManagerを使って直接SQLを発行する場合は、配列でデータを受け取る。配列内に保管されているレコードも連想配列になっている。→配列の型

SQL】 日付を加工する

  • DATEDIFF ・・・日付の差分を取る
    例)
mysql>  SELECT DATADIFF(' 2021-12-31 ', ' 2021-12-30 ' ) ;
          → 1
      SELECT DATADIFF(' 2021-11-30 ', ' 2021-12-31 ' ) ;
          → - 31

以上の例を元に、例えば、最終変更日時から半年以上経過しているかどうかを知りたいとき、
最終更新日をMAX(update_date)とすると

mysql>  SELECT DATADIFF( MAX(update_date), '現在日時 − 6ヶ月')  <= 0 ;

ということになる。

  • DATE_ADD(加算)
  • DATE_SUB(減算) より、' 現在日時 − 6ヶ月 'を取るには、
DATE_SUB( ' 現在日時 ', INTERVAL 6 MONTH) ;
もしくは、
DATE_ADD( ' 現在日時 ', INTERVAL - 6 MONTH) ;

基本的に日時は文字列になるが、加工や比較のときは型に注意すること。

今日はここまで。 毎日少しずつ、かつ学びたてほやほやの内容が多いので、大事なとこ抜けてたり、普通に間違ってたり、断片的な知識メモしか書いてなかったりするから、誤認識の修正や追記が随時必要。