2つのテーブルがあります。
地図
Product Channel ProgDate AdvTime
Air Pix 30-04-2011 20:57:16
Air Pix 30-05-2011 00:55:08
MBA
Product Channel Date ProgStartTime ProgEndTime
Air Pix 30-04-2011 23:00:00 02:00:00
Air Pix 30-04-2011 21:00:00 22:00:00
MAPのAdvtTimeがMBAテーブルのStartTime
&の間にあるかどうかを確認する必要があります。EndTime
しかし、期間(ProgStartTime
- ProgEndTime
)が1時間の場合、+または-5分のバッファーが必要です。
私はする必要があり
ます00:05:08 to match 23:00:00
、02:00:00
そして
。20:57:16 to match 21:00:00
22:00:00
以下のクエリを使用して参加しました
Select Distinct mb.Id as mbaid,mp.id as mapid, mp.Channel as Channel, mp.Product,mp.ProgDate, mp.AdvTime, mb.Channel, mb.ProgStartTime,
mb.ProgEndTime, convert(time, dateadd(minute, datediff(minute, mb.progStartTime, mb.progEndTime), 0)) as timeDiff from map22 as mp inner join mba22 as mb
on ((mp.ProgDate = mp.ProgDate and mp.Channel=mb.Channel and mp.Product=mb.Product))
where (mp.ProgDate = mb.ProgDate
AND AdvTime >= ProgStartTime
AND (AdvTime <= ProgEndTime OR ProgEndTime < ProgStartTime))
OR
(mp.ProgDate = Dateadd(day,1,mb.ProgDate)
AND ProgEndTime < ProgStartTime
AND AdvTime <= ProgEndTime)
order by mp.Id asc