두 개의 테이블이 있습니다.시간 범위에 대한 쿼리에 가입하십시오.
MAP
Product Channel ProgDate AdvTime
Air Pix 30-04-2011 20:57:16
Air Pix 30-05-2011 00:55:08
MBA 내가 MAP에서 MBA 테이블의 StartTime
& EndTime
사이 AdvtTime 여부를 확인해야
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
.
그러나 기간 (ProgStartTime
- ProgEndTime
)이 1 시간이면 + 또는 --5 분의 버퍼가 필요합니다.
나는 02:00:00
에 00:05:08 to match 23:00:00
및 22:00:00
에 20:57:16 to match 21: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
유감스럽게도 나는 내 질문이 명확하게 짜 맞춰진 것처럼 적절한 결과를 얻지 못했다. 누군가가이 시나리오에서 나를 도와 줄 수 있습니까 –
테이블에 대한 열 데이터 유형 세부 정보를 제공 할 수 있습니까? –