2

イベント データを含む MySQL テーブルがあります。重要な列は from_date と to_date です。どちらにも、イベントの開始時と終了時を表すエポック タイムスタンプが含まれています。

次を使用して、指定された日付範囲内にあるイベントを取得するためにテーブルにクエリを実行します。

from_date >= $from_date AND to_date <= $to_date

これで問題ありませんが、現在の私の問題は、from_date より前に開始されたが to_date ルールに一致するイベントが選択されていないことです。つまり、from_date より前に開始されたイベントがまだアクティブです...規則ですが、to_date を渡します。結果にも「アクティブな」イベントが表示される必要があります。

助言がありますか?

4

3 に答える 3

2

$to_date より前に開始し、$from_date より後に終了するすべてのイベントを検索すると、探しているものが取得されるはずです。

from_date <= $to_date AND to_date >= $from_date

$from と $to が 10:00 と 11:00 の場合。次に、このクエリは次のようになります。

  • 9:00 9:50 (9:50 < 10 のためいいえ)
  • 9:00 10:10 (はい)
  • 10:20 10:30 (はい)
  • 10:50 11:10 (はい)
  • 11:20 12:00 (11:20 > 11:00 のためいいえ)
  • 9:00 12:00 (はい、9 は < 11 および 12 > 10 であるため)
于 2013-04-16T15:11:54.950 に答える
0

何らかの方法でアクティブなイベントを追跡して、これを試すことができると思います:

  (from_date >= $from_date AND to_date <= $to_date) OR active = 1

これは、コードをコピーして貼り付けないアイデアです

于 2013-04-16T15:03:38.343 に答える