Microsoft SQL Server
날짜 범위 생성하기
수색…
매개 변수
매개 변수 | 세부 |
---|---|
@FromDate | 생성 된 날짜 범위의 포괄적 인 하위 경계입니다. |
@ToDate | 생성 된 날짜 범위의 포괄적 인 상위 경계입니다. |
비고
대부분의 전문가는 순식간에 시퀀스를 생성하는 대신 Dates 테이블을 만드는 것이 좋습니다. http://support.microsoft.com/default.aspx
재귀 CTE로 날짜 범위 생성
재귀 CTE를 사용하면 포괄적 인 날짜 범위를 생성 할 수 있습니다.
Declare @FromDate Date = '2014-04-21',
@ToDate Date = '2014-05-02'
;With DateCte (Date) As
(
Select @FromDate Union All
Select DateAdd(Day, 1, Date)
From DateCte
Where Date < @ToDate
)
Select Date
From DateCte
Option (MaxRecursion 0)
기본 MaxRecursion
설정이 필요로이 방법을 사용하여 100 개 이상의 생성 날짜 (100)이며 Option (MaxRecursion N)
쿼리의 세그먼트 N
목적이다 MaxRecursion
설정. 이 값을 0
설정하면 MaxRecursion
제한이 모두 제거됩니다.
탈리 테이블로 날짜 범위 생성하기
탈 범위 테이블을 사용하여 범위 사이의 날짜를 생성하는 방법으로 날짜 범위를 생성 할 수있는 또 다른 방법은 다음과 같습니다.
Declare @FromDate Date = '2014-04-21',
@ToDate Date = '2014-05-02'
;With
E1(N) As (Select 1 From (Values (1), (1), (1), (1), (1), (1), (1), (1), (1), (1)) DT(N)),
E2(N) As (Select 1 From E1 A Cross Join E1 B),
E4(N) As (Select 1 From E2 A Cross Join E2 B),
E6(N) As (Select 1 From E4 A Cross Join E2 B),
Tally(N) As
(
Select Row_Number() Over (Order By (Select Null))
From E6
)
Select DateAdd(Day, N - 1, @FromDate) Date
From Tally
Where N <= DateDiff(Day, @FromDate, @ToDate) + 1
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow