수색…


매개 변수

매개 변수 세부
@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