2011-02-24 5 views
1

두 개의 서로 다른 날짜를 입력으로 제공합니다. 내가 예를 들어SQL Server 2008에서 날짜를 찾는 방법은 무엇입니까?

.. 두 날짜 사이의 날짜 무엇을 찾으려면 :

1'st Input is : 2011-02-20 

2'nd input is : 2011-02-25 

    Output is: 
      2011-02-20 
      2011-02-21 
      2011-02-22 
      2011-02-23 
      2011-02-24 
      2011-02-25 

날짜 사이를 찾을 수있는 기능이

달리하는 방법을 찾기 위해 ... 있습니까?

답변

2

이것을 달성하기 위해 CTE를 사용할 수 있습니다.

DECLARE @StartDate DATETIME 
DECLARE @EndDate DATETIME 

SET @StartDate = '2011-02-20' 
SET @EndDate = '2011-02-25' 

;WITH GetDates AS 
(
SELECT 1 as counter, @StartDate AS Date 
UNION ALL 
SELECT counter + 1, DATEADD(day, counter, @StartDate) 
FROM GetDates 
WHERE DATEADD(day, counter, @StartDate) <= @EndDate 
) 
SELECT Date FROM GetDates 
+0

작은 조정 필요 - SELECT 1 ...로 "SELECT 0 as counter"를 변경하십시오. 그렇지 않으면 첫 번째 날짜가 두 번 반환됩니다. – AdaTheDev

+0

@AdaTheDev - 아 좋은 지점. 건배! – codingbadger

2

참조 :

Why should I consider using an auxiliary calendar table?

이 달력 테이블이 훨씬 쉽게 날짜를 포함 어떤 비즈니스 모델 주위 솔루션을 개발 할 수 있습니다. 마지막으로 확인한 내용은 거의 모든 비즈니스 모델 을 어느 정도 생각할 수 있습니다. 상수 길고 복잡하고 비효율적 인 문제가 발생하면 메서드에 다음과 같은 개의 질문이 포함됩니다. x와 y 사이에 영업일이 얼마나됩니까? ...

0
SELECT Date = @StartDate + number 
    FROM master..spt_values 
WHERE type = 'P' 
    AND number BETWEEN 0 AND DATEDIFF(day, @StartDate, @EndDate) 

참고 : 두 날짜 사이의 거리 이상 2,047일 경우이 솔루션은 적용되지 않습니다.

관련 문제