1

利用可能カレンダーを作成しようとしていますが、取得時に日付を比較する方法を知る必要があります。

私のDBは

id
start_date
end_date
status

ここで、翌月、つまり 2010 年 3 月 1 日から 2010 年 4 月 1 日までの予約を取得したいとします。このデータを取得するにはどうすればよいですか? and 条件を使用して直接比較しようとしましたが、役に立ちませんでした。

DB の形式は yyyy-mm-dd で、同じものを使用して比較しました。しかし、直接比較は機能しません。

4

2 に答える 2

4

別の範囲と交差する日付範囲をフェッチする方法は、ここで専門的に説明されています:日付範囲の比較

要約すると、おそらく次のようなクエリを実行する必要があります。

$start = date('Y-m-d');
$end = date('Y-m-d', strtotime('+1 month'));

$conditions = array('Event.start <=' => $end, 'Event.end >=' => $start);

$this->Event->find('all', array('conditions' => $conditions));

これにより、翌月以内にすべてのイベントが検索されます。それらは早く開始することも遅く終了することもありますが、月と交差します。

于 2010-02-21T00:20:56.603 に答える
1

テーブルの名前が Events で、日付が $start_date と $end_date に格納されていると仮定すると、これでうまくいくと思います。

$results = $this->Event->find('all', array(
    'conditions' => array(
        'start_date >=' => $start_date,
        'end_date <'    => $end_date
    )
));

範囲内で開始および終了するすべてのレコードを取得します。

于 2010-02-20T16:08:36.127 に答える