본문 바로가기
RDB/MSSQL

[MSSQL] 특정 구간의 날짜 더미데이터 만들기 (with CTE)

by kigo23 2023. 4. 17.
반응형

특정 구간의 날짜 더미데이터가 필요한 경우 CTE를 사용하여 다음과 같이 만들 수 있습니다.

DECLARE @start_time datetime = '20230401 00:00:00' --첫 날짜
DECLARE @end_time datetime = '20230401 23:00:00'; --마지막 날짜
DECLARE @time_diff int = 1; --설정할 시간 간격

WITH cte AS (
  SELECT 0 AS n
  UNION ALL
  SELECT n + @time_diff 
  FROM cte
  WHERE n < DATEDIFF(HOUR, @start_time, @end_time) -- HOUR 대신 다른 시간 단위 설정가능
)

SELECT DATEADD(HOUR, n, @start_time) FROM cte 
OPTION (MAXRECURSION 0) --최대 재귀 횟수 제한해제

위 쿼리를 실행하면 다음과 같이 출력됩니다.