2011-03-18 30 views
2

我的日期如何使用sql設置一個日期範圍?

Dates 
2011-03-01 00:00:00.000 
2011-03-03 00:00:00.000 
2011-03-07 00:00:00.000 
2011-03-08 00:00:00.000 
2011-03-13 00:00:00.000 
2011-03-14 00:00:00.000 
2011-03-15 00:00:00.000 

如何轉換這個日期在一個日期範圍內像下面

我需要這樣的

Date_from     Date_to 
2011-03-01 00:00:00.000 2011-03-01 00:00:00.000 
2011-03-03 00:00:00.000 2011-03-03 00:00:00.000 
2011-03-07 00:00:00.000 2011-03-08 00:00:00.000 
2011-03-13 00:00:00.000 2011-03-15 00:00:00.000 
+0

輸出第一個範圍不應該是第一個 - 第3個,而不是第1個 - 第1個和第3個 - 第3個? – 2011-03-18 22:21:02

+0

此外,您如何定義哪些日期被視爲範圍的第一個/最後一個?例如,爲什麼不是第3-7個範圍?爲什麼最終的範圍是13-15而不是13-14,14-15? – 2011-03-18 22:22:29

+0

陳述你的關係請! (正如我請求你的上一個問題......) – 2011-03-18 22:23:05

回答

2

的SQL Server 2005+

;WITH cte 
    AS (SELECT *, 
       DATEDIFF(DAY, 0, Dt) - 
         DENSE_RANK() OVER (ORDER BY DATEDIFF(DAY,0,Dt) ) AS Grp 
     FROM Dates) 
SELECT MIN(Dt) AS Date_from, 
     MAX(Dt) AS Date_to 
FROM cte 
GROUP BY Grp