0

2 つの日付の間にある値を選択しようとしているので、<= と >= を使用する必要がありますが、私のクエリは、日付と等しい値を考慮していないように見えます。

「Ymd h:i:a」形式で日付を保存する CakePHP を使用しています。特定の週間隔(日曜日から始まる)の日付を見つけたかったので、次を使用しました。

$start_date = date('Y/m/d', strtotime('last Sunday', strtotime($timestamp)));
$formatted_start_date = str_replace("/","-",$start_date);

「Ymd」としてフォーマットされた $start_date を見つけようとしましたが、正しい日付が見つからなかったので、そのままに切り替え、str_replace を使用して「/」ではなく「-」を使用してフォーマットしました。

$date_query = $this->Order->query("select * from orders where id = '$id' and created => '$formatted_start_date' and created <= '$current_timestamp' "); 

データベースの時間値が「Ymd h:i:a」形式であることを考慮して、日付の比較に「Ymd」を使用できますか? LIKE と <= の両方を含む MySQL クエリを実行することは可能ですか?

4

4 に答える 4

9

する必要はありませんstr_replace()- を取得するだけですY-m-d:

$start_date = date('Y-m-d', strtotime('last Sunday', strtotime($timestamp)));

次に、手動でクエリを作成する代わりに、CakePHP の規則を使用します(はい、データベースに保存されている日時が Ymd H:i:s であっても、日付比較に Ymd を使用できます)。

$this->Order->find('all', array(
    'conditions' => array(
        'id' => $id,
        'created >=' => $start_date,
        'created <=' => $end_date . ' 23:59:59',
        'my_field LIKE' => '%whatever%'
));

ただし、これは少し奇妙に思えますが、通常、「id」または日付範囲のいずれかで何かを探していますが、両方ではありません。しかし、おそらくあなたには理由があります:)

上記のように、必要に応じて「LIKE」を追加することもできます。

于 2013-05-12T05:40:46.073 に答える
0

コントローラーでこれを試してください

$searchTutorQuery = $this->Tutordetails->find('all', array(
                'conditions' => array(
                    "User.zip" => $zipcode1,
                    "Tutordetails.user_id"=>$uid,
                    "Tutordetails.subject_id" => $subjectName,
                    "Tutordetails.hourly_rate >=" => $hourly_rate 


                ),
            //"User.id =" => $userid,
            'fields' => array('user_id', 'Tutordetails.subject_id', 'Tutordetails.hourly_rate',
                'User.zip', 'Tutordetails.zip'),
            'order' => array('Tutordetails.id DESC')
        ));
于 2015-07-17T04:38:03.380 に答える
0

このように条件の配列を追加するだけです。

$resl = $this->DBNAME->find('all',array(conditions=>array('date1>date','date1<date')));

「日付」をあなたの日付に置き換えます。
これは私のために働いています。

于 2015-01-30T04:59:04.287 に答える
0

上記の答えは完全に正しいですが、関数 daysAsSql を持つ CakePHP 時間ヘルパーを使用すると、より簡単なアプローチを取ることができます。

http://book.cakephp.org/2.0/en/core-libraries/helpers/time.html#TimeHelper::daysAsSql

于 2013-05-13T10:01:08.610 に答える