티스토리 뷰

시간표 비스므리한걸 만들일이 생김..

 

대강 시간은 시작시간 종료시간이 있고 30분단위 타임테이블을 만들어서 30분 안에 시간이 포함되는지 나타내면 되는데..

 

제일 간단하게 작업할수 있는건 해당 날짜의 30분 단위 테이블을 만들고 거기에 LEFT JOIN으로 컬럼 내용을 조회하는걸로 작업하면 될꺼라 판단..

 

30분단위로 뽑아주는 쿼리

 

SELECT
 dt.number+1 DayNo,
 tt.number+1 HourNo,
 mt.number+1 Quarter,
 dateadd(mi,(30*mt.number),dateadd(hh,tt.number,dateadd(dd,dt.number,'20190101'))) [START]
 ,dateadd(mi,(30*mt.number)+30,dateadd(hh,tt.number,dateadd(dd,dt.number,'20190101'))) [end]
FROM master..spt_values dt, master..spt_values tt, master..spt_values mt
WHERE
 dt.type = 'P' AND
 tt.type = 'P' AND
 mt.type = 'P' AND
 dt.number < 365 AND
 tt.number BETWEEN 9 AND 18  AND
 mt.number IN (0, 1) AND dateadd(dd,dt.number,'20190101') < dateadd(DD,6,'20190101')
ORDER BY dt.Number, tt.Number, mt.Number

 

쿼리분석기로 돌린거라 20190101 날짜가 포함되어있는 부분을 원하는 날짜로 바꾸면 되고.. TT.NUMBER 범위는 시간 범위라 9시 부터 19시까지 30분단위의 ROW를 만들어줌.. 날짜는 시작일부터 6일뒤까지

 

댓글