SQL Serverのクエリ時間が重複範囲

範囲が競合している重複がある場合にしばしば遭遇するデータを検証するために、典型的なシナリオでは、部屋を予約します。

部屋は10月1日を持っている場合 - 10月10日、録画予約、予約が再びときに、他のゲストは、システムが日付範囲と重複していないかを決定しなければなりません。

重複する4例があります。

図1に示すように、すべての包括的な:例えば、ユーザの試み予約9 30 - 10月15日。

図2に示すように、含まれる:例えば、10 5の予約にユーザの試み6 - 10月。

3、下限があって、ユーザが9の予約を試み、例えば30 - 10月2日。

図4に示すように、上限としては、10 8の予約に、例えば、ユーザの試み - 10月15日。

SQLクエリの判断を使用する場合は、我々はすべての4例は、私たちはしばしば、このようなエラー文言の2つだけ考えることを考慮する必要があります。


`SELECT * FROM rooms WHERE ID=1 AND (starttime BETWEEN '2020-10-01' AND '2020-10-10' OR endtime BETWEEN '2020-10-01' AND '2020-10-10' )`

次のように正しい言葉遣いは、次のとおりです。

SELECT *
  FROM ROOMS
 WHERE ID = 1
   AND (STARTTIME BETWEEN '2020-10-01' AND '2020-10-10' OR
       ENDTIME BETWEEN '2020-10-01' AND '2020-10-10' OR
       '2020-10-01' BETWEEN STARTTIME AND ENDTIME OR
       '2020-10-10' BETWEEN STARTTIME AND ENDTIME)

それだけで4例すべての拠点です。

おすすめ

転載: blog.51cto.com/11728495/2479243
おすすめ