SQL Serverの:クエリ重複した時間帯

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

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

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

1、オールインクルーシブ:例えば、8月30日予約しようとするユーザー - 10月15日を。

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

3、下限があって、ユーザが試行予約例えば8月30日から9月2日まで。

4、上限が含まれます。たとえば、9月8日を予約しようとするユーザー - 10月15日。

SQLを使用するとの判断を照会するとき、我々はすべての4例という、私たちは多くの場合、2つだけ、このようなエラー文言の考慮を考慮に入れる必要があります。

部屋SELECT * FROM WHERE ID = 1 AND( '2011-09-01' BETWEEN STARTTIME AND '2011-09-10' OR終了時刻 '2011-09-01' BETWEEN AND '2011-09-10')

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

SELECT *
  の部屋から
 WHERE ID = 1
   AND( '2011-09-01' BETWEEN STARTTIME AND '2011-09-10' OR
       ENDTIME '2011-09-01' BETWEEN AND '2011-09-10' OR
       「2011-09 STARTTIMEとENDTIMEの間、または-01'
       STARTTIMEとENDTIME BETWEEN 2011-09-10 ')'

 

それだけで4例すべての拠点です。
----------------
オリジナルリンクします。https://blog.csdn.net/yishengreai/article/details/6865426

おすすめ

転載: www.cnblogs.com/luomingui/p/11684090.html