[Codeigniter-users] SQLクエリの生成について

Zurück zum Archiv-Index

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




Codeigniter-users メーリングリストの案内
Zurück zum Archiv-Index