티스토리 뷰
시간표 비스므리한걸 만들일이 생김..
대강 시간은 시작시간 종료시간이 있고 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일뒤까지
'serverSide > MSSQL' 카테고리의 다른 글
[MSSQL 2005] 날짜 랜덤 생성 (0) | 2019.05.10 |
---|---|
[MSSQL] 년 월 주차 뽑기 (0) | 2018.12.31 |
[MSSQL] 그룹별 TOP 1 랜덤 뽑기 (0) | 2018.07.21 |
[MSSQL2005] 미러링 연결끊김 (0) | 2018.07.21 |
[MSSQL] SELECT XML PATH 행데이터로 변경 (0) | 2018.07.21 |