0

"Open Till at least"フィルターを使って会場を検索しようとしています。

私が抱えている問題は、一部の会場は から まで、一部は から まで営業して8AMいる6PMこと10PMです3AM。Nice SO メンバーがこのコードの作成を手伝ってくれましたが、検索用に変更しようとしたときに問題に気付きました。

開いている会場をクエリし、会場のtill at least 20:00営業時間が から11AMまで21:00の場合、すべてOKです。

しかし、営業時間で会場をクエリしtill at least 20:00、営業時間が から21:00まで03:00の場合closedは、 が返されます。

まだ閉まっている会場の営業時間を表示するにはどうすればよいですか?

これが私のコードです:

SELECT
e.VENUE_NAME,
hrs.opening_day,
hrs.opening_time,
hrs.closing_time
FROM hours_of_operation hrs join venues e
  on hrs.venue_id = e.id
     and not is_closed
     and ((hrs.opening_day=date_format('$phpWhenDate' - INTERVAL (closing_time<opening_time and time('$phpWhenDate')<closing_time) DAY, '%a'))
          AND (closing_time<opening_time XOR
         (time('$phpWhenDate') >= least(opening_time,closing_time)
          and time('$phpWhenDate') < greatest(opening_time, closing_time))))

dataWhenDate次のようになります: 2013-02-21 04:00:00

基本的に、スライダーを使用して、少なくとも会場を開いておきたい期間を選択し、送信する日付を生成します。

みんな、ありがとう!

4

1 に答える 1

1

厳密に言えば、 ~ の間営業している会場は、 営業時間 を照会する21:0003:00、実際には閉店として返されるはずです。営業時間till at least 20:00は 21:00 のみであるためです。私がユーザーである場合、 にopening hours till at least 20:00のみ開場する会場を表示すると、実際には誤解を招くことになります21:00

単純にどの会場がその後開いているかを示したい場合は、その会場の開店時間と閉店時間と20:00比較し、どちらかがそれよりも大きい場合は、それが後で開いていることをユーザーに説明するアスタリスクを入れたい場合があります。過去にオープンした会場には、後にオープンする会場が含まれます)。20:0020:0020:0020:0020:00

于 2013-02-20T21:26:03.527 に答える