kunitsuji
tsuji****@m-s*****
2008年 7月 8日 (火) 00:41:10 JST
kunitsujiです。 $this->db->where("start_day <= DATE_FORMAT(CURRENT_TIMESTAMP(),'%Y-%m-%d %H:%i:%s')"); $this->db->where("end_day >= DATE_FORMAT(CURRENT_TIMESTAMP(),'%Y -%m-%d %H:%i:%s')"); $this->db->get("c_access_log"); これでいけますね。 生成されたSQLは 0.0000 SELECT * FROM (`c_access_log`) WHERE `start_day` <= DATE_FORMAT (CURRENT_TIMESTAMP(),'%Y-%m-%d %H:%i:%s') AND `end_day` >= DATE_FORMAT (CURRENT_TIMESTAMP(),'%Y-%m-%d %H:%i:%s') です。 >decoyです。 > >kunitsujiさん、こんばんは。 >いつもいろいろとありがとうございます。 > >> '%Y-%m-%d %H:%i:%s'が¥がついてしまうということですよね? > >%Y-%m-%d %H:%i:%sの前後の'に\がついてしまう事と >DATE_FORMAT()の前後に'がついてしまいますね。 > > >> $start_day = "start_day <= DATE_FORMAT(CURRENT_TIMESTAMP(), '%Y-%m-%d >> %H:%i:%s')"; >> $this->db->where($start_day); >> $query = $this->db->get('c_access_log_id'); > >やっぱり上記のような書き方にするしかないんでしょうかね? >仮にそうならNOW()等の関数を利用した演算子での比較は >CIのActive Recordクラスでは不可能というところでしょうか? > >// decoy > >----- Original Message ----- >From: "kunitsuji" <tsuji****@m-s*****> >To: <codei****@lists*****> >Sent: Monday, July 07, 2008 11:45 AM >Subject: Re: [Codeigniter-users]SQLクエリの生成について > > >> kunitsujiです。 >> >> こんな感じで。OKですね。 >> >> $start_day = "start_day <= DATE_FORMAT(CURRENT_TIMESTAMP(), '%Y-%m-%d % >> H:%i:%s')"; >> $this->db->where($start_day); >> $query = $this->db->get('c_access_log_id'); >> >> >>> >>>decoyさん、こんにちは。 >>>自分active recorクラスを使わないので何とも言えませんが、 >>>'%Y-%m-%d %H:%i:%s'が¥がついてしまうということですよね? >>> >>>$ymdstr = '%Y-%m-%d %H:%i:%s' >>>として >>>? で渡すのはむりですかね?w >>>やってみてませんが。。。。これからやってみますw >>> >>> >>>>decoyです。 >>>> >>>>WHERE句に >>>>start_day <= DATE_FORMAT(CURRENT_TIMESTAMP(), '%Y-%m-%d %H:%i:%s') >>>>AND end_day >= DATE_FORMAT(CURRENT_TIMESTAMP(), '%Y-%m-%d %H:%i:%s') >>>>というものを使いたい場合 >>>>Active Record クラスのwhereメソッドやget_whereメソッドに >>>>どのように書けばクエリが正しく生成されますでしょうか。 >>>> >>>>1. >>>>$this->db->get_where( >>>> テーブル名, >>>> array( >>>> 'start_day <=' => "DATE_FORMAT(CURRENT_TIMESTAMP(), '%Y-%m-%d >>>>%H:%i:%s')", >>>> 'end_day =>' => "DATE_FORMAT(CURRENT_TIMESTAMP(), '%Y-%m-%d >>>>%H:%i:%s')", >>>> ), >>>>); >>>> >>>>2. >>>>$this->db->where('start_day <=', "DATE_FORMAT(CURRENT_TIMESTAMP(), >>>>'%Y-%m-%d >>>>%H:%i:%s')"); >>>>$this->db->where('end_day >=', "DATE_FORMAT(CURRENT_TIMESTAMP(), >>>>'%Y-%m-%d >>>>%H:%i:%s')"); >>>>$this->db->get(テーブル名); >>>> >>>>1や2のやり方でやった場合、下記のようになってしまい正しく生成されませんでし >>>>た。 >>>> >>>> >>>>start_day <= 'DATE_FORMAT(CURRENT_TIMESTAMP(), \'%Y-%m-%d %H:%i:%s\')' >>>>end_day >= 'DATE_FORMAT(CURRENT_TIMESTAMP(), \'%Y-%m-%d %H:%i:%s\')' >>>> >>>>$this->db->query(クエリ直書き);すれば意図している結果は返ってきますが >>>>出来るだけ避けたいと考えております。 >>>> >>>>以上、宜しくお願い致します。 >>>> >>>>_______________________________________________ >>>>Codeigniter-users mailing list >>>>Codei****@lists***** >>>>http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users >>> >>>_______________________________________________ >>>Codeigniter-users mailing list >>>Codei****@lists***** >>>http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users >> >> _______________________________________________ >> Codeigniter-users mailing list >> Codei****@lists***** >> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users > >_______________________________________________ >Codeigniter-users mailing list >Codei****@lists***** >http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users