У меня есть две таблицы.Присоединиться к запросу для временного диапазона
MAP
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
Я должен проверить, является ли AdvtTime в МАП находится между StartTime
EndTime
& в таблице MBA.
Но когда продолжительность (ProgStartTime
- ProgEndTime
) составляет один час, мне нужен буфер + или - 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
Пожалуйста, не спрашивайте дублирующие вопросы - http://stackoverflow.com/questions/15477708/sql-join-with-a-buffer- время – rbedger
Извините, но я не получил правильный результат там, так как мой вопрос не был четко оформлен. Может ли кто-нибудь помочь мне в этом случае –
Можете ли вы предоставить данные типа столбца для ваших таблиц? –