집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 날짜 범위를 생성하는 방법은 무엇입니까?
SQL Server 내에서 날짜 범위 생성
데이터베이스 관리자는 날짜 범위로 테이블을 채워야 하는 경우가 많습니다. 이 문서에서는 이를 달성하기 위한 효율적인 SQL Server 방법을 보여줍니다.
한 가지 일반적인 기술은 ROW_NUMBER()
하위 쿼리를 사용하여 숫자 시퀀스를 생성합니다.
<code class="language-sql">DECLARE @StartDate DATE = '20110901'; DECLARE @EndDate DATE = '20111001'; SELECT DATEADD(DAY, nbr - 1, @StartDate) FROM ( SELECT ROW_NUMBER() OVER (ORDER BY c.object_id) AS nbr FROM sys.columns c ) nbrs WHERE nbr - 1 <= DATEDIFF(DAY, @StartDate, @EndDate);</code>
이 하위 쿼리는 일련의 숫자를 생성한 다음 DATEADD()
각 숫자만큼 시작 날짜를 증가시켜 날짜 범위를 생성합니다.
기존 집계 테이블을 활용하는 보다 성능이 뛰어난 대안은 다음과 같습니다(사용 가능한 경우).
<code class="language-sql">SELECT DATEADD(DAY, nbr, @StartDate) FROM nbrs WHERE nbr <= DATEDIFF(DAY, @StartDate, @EndDate);</code>
이는 재귀 쿼리를 방지하여 긴 날짜 범위를 처리할 때 상당한 속도 이점을 제공합니다. 집계 테이블에는 사전 생성된 일련의 숫자가 포함되어 있어 즉석에서 숫자를 생성할 필요가 없습니다.
위 내용은 SQL Server에서 날짜 범위를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!