SQL-빠른 팁 #5 - 날짜 및 시간 시퀀스 만들기

2934 단어 tsqlmssqlsqlsqlserver

SQL Server 팁과 요령



이것은 제가 1년 동안 축적한 일련의 빠른 팁과 요령 중 일부이며 다른 사람들에게 유용할 수 있다고 생각합니다.
비슷한 짧은 팁과 요령이 있으면 의견을 남겨주세요.

날짜 및 시간 시퀀스 만들기



날짜 및 시간과 관련된 데이터로 작업할 때 그룹화하거나 선택할 일련의 날짜를 생성해야 할 수 있습니다.
여기서 요령은 재귀 CTE( Common Table Expression )를 사용하는 것입니다. 읽기가 약간 까다롭지만 CTE가 수행하는 작업은 각 재귀에 대해 하나의 추가 날짜/시간으로 합집합을 만드는 것입니다.

아래 코드는 날짜 사이에 10분 간격으로 날짜/시간 시퀀스를 생성합니다.

일반적으로 재귀와 마찬가지로 이것은 많은 리소스를 차지하고 느릴 수 있으므로 실행 횟수가 많은 프로덕션 코드에서는 사용하지 않는 것이 좋습니다. 그러나 데이터 분석 및 데이터 드릴의 경우 이 트릭은 매우 유용할 수 있습니다.

DECLARE @stepSizeInMinutes INT = 10; -- Change this line to change the time interval
DECLARE @from DATETIME2 = '2017-01-01 00:00:00.00000',
          @to DATETIME2 = '2017-01-04 23:50:00.00000';

-- Create Recursive Discrete Table
WITH Recursive_CTE AS
(
       SELECT @from AS TimestampUtc
        UNION ALL
       SELECT DATEADD(MINUTE, @stepSizeInMinutes, TimestampUtc) 
         FROM Recursive_CTE
        WHERE TimestampUtc < @to
)
SELECT *
  FROM Recursive_CTE
 ORDER BY TimestampUtc
OPTION (MAXRECURSION 0);


좋은 웹페이지 즐겨찾기