1

各店舗の営業時間を説明する2つのフィールド(24時間形式の整数の「from」と「to」)を含むテーブルがあります。特定の時間に営業している店舗をユーザーが検索できる検索ページを作成しました。

SQLクエリの作成方法がよくわかりません。主な問題は、2つのケースがあることです。

1つのケースは、from値がto値よりも大きく、たとえば23から5であり、23から24と1から5の2つの間隔を与える場合です。

2番目のケースは、toの値がfromの値よりも大きい場合(たとえば、8から22)で、1つの間隔を取得します。

クエリを作成する方法はありますか?それはこれらの2つの場合に機能しますか?

4

1 に答える 1

1

このテーブル スキーマを考えてみましょう:

store
id  fromH  toH
 1     23   5
 2      8  22

およびパラメータ @T (探している時間)

次に選択します:

select *
from store
where 
  ( fromH < toH and @t between fromH and toH ) or
  ( fromH > toH and 
         (@t between fromH and 24 OR
         (@t between 1 and toH )
  )

説明する

次のストアからすべてのフィールドを選択します。

  • 営業時間の開始 > 営業時間の終了であり、時間は両方の間にあります。
  • また
  • 開店時間 < 開店時間で、時間は開店時間と 24 時間の間、または 1 時間と閉店時間の間です。
于 2012-09-02T22:22:35.490 に答える