以下は、それは次のようになり、あなたのテーブルに列 `id`、` start_date`と `end_date`を持っていると仮定すると、一緒にあなたの例から、次のいずれかのconfictsに
Declare @Table table (EventID int,StartDate Date,EndDate Date)
Insert into @Table values
(1,'2016-08-01','2016-08-09'),
(2,'2016-08-10','2016-08-17')
Declare @StartDate Date = '2016-08-05'
Declare @EndDate Date = '2016-08-18'
Select *
,ValidStart = IIF(@StartDate Between StartDate and EndDate,0,1)
,ValidEnd = IIF(@EndDate Between StartDate and EndDate,0,1)
From @Table
Where @StartDate Between StartDate and EndDate
or @EndDate Between StartDate and EndDate
戻り
EventID StartDate EndDate ValidStart ValidEnd
1 2016-08-01 2016-08-09 0 1
を返します。挿入されるstart_dateの値 max(終了の日の列)が挿入されるかどうかを確認する価値がありますか?すべてのイベントが連続していると仮定します。連続していない場合は、すべてのイベント行をループする必要があります。私は何かすべきことがない場合を除きますか? –
sigint
残念ながら、1.08.16-9.08.16と13.08.16-15.08.16のようにギャップが存在する可能性があります。 –