[MSSQL] 날짜,시간 데이터 생성하기
날짜나 시간단위의 데이터가 로우로 들어 오는 경우
간혹 데이터 자체가 누락 되는 경우가 있다
시간 순서대로 보여줘야 하는데 데이터 누락으로 로우가 없어 데이터가 땡겨져버리는 경우가 있기 때문에
그런종류의 데이터는 별도로 시간이나 날짜 로우를 만들어 낸 후 거기에 끼워 맞추는 식으로 가져 온다.
oracle을 사용할때는 별 문제 없이 만들었는데
mssql에서는 날짜나 시간을 만들어 내는 쿼리를 몰라 한참을 해매다 알아낸 방법이다
1. 날짜+시간 단위 생성 방법
1 2 3 4 5 6 7 8 9 10 11 12 13 | DECLARE @start_date DATETIME = '2018-07-12 00:00:00.000'; -- 시작시간 DECLARE @end_date DATETIME = '2018-07-13 00:00:00.000'; -- WITH AllDays AS ( SELECT @start_date AS [Date], 1 AS [level] UNION ALL SELECT DATEADD(hour, 1, [Date]), [level] + 1 FROM AllDays WHERE [Date] < @end_date ) SELECT [Date], [level] FROM AllDays OPTION (MAXRECURSION 0) | cs |
1-1 결과값
위와 같이 쿼리를 짜주게 되면 해당 범위만큼의 날짜,시간을 생성해 준다
2. 날짜단위 생성방법
1 2 3 4 5 6 7 8 | DECLARE @Date1 DATE, @Date2 DATE SET @Date1 = '20150430' SET @Date2 = '20150601' SELECT DATEADD(DAY,number+1,@Date1) [Date] FROM master..spt_values WHERE type = 'P' AND DATEADD(DAY,number+1,@Date1) < @Date2 | cs |
2-1 결과값
이런 결과를 얻어낼 수 있다.
와...
그런데 이거 포스팅하다가 실제로 프로젝트에 써야 하는 쿼리 실수로 날려먹음...
다시 짜야 되는데 스트레스 엄청받는다.
'Yame Daily Life' 카테고리의 다른 글
[라그M] 니플헤임 안개숲 초월 퀘스트 NPC 위치! (0) | 2018.11.12 |
---|---|
[라그M] 프리 비숍 룬판 정보(5.0 추가) (2) | 2018.10.10 |
[초대장] 초대장 배포. 마감 되었습니다. (26) | 2017.09.11 |
[초대장] 티스토리 초대장 11장 배포합니다 [마감완료] (40) | 2017.07.28 |
티스토리 주제가 명확한 글을 쓰는 방법 (1) | 2017.07.20 |