2011-02-24 44 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 0 as counter」更改爲SELECT 1 ...,而不是第一次返回兩次。 – AdaTheDev 2011-02-24 09:00:19

+0

@AdaTheDev - 阿好的地方。乾杯! – codingbadger 2011-02-24 09:04:28

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) 

注意:此方法不適用於當兩個日期之間的距離更2047天。