如何生成整個範圍的日期? 謝謝生成日曆
Q
生成日曆
0
A
回答
0
由於米奇小麥的建議是他的評論,可能提高此查詢性能的最佳方法是使用numbers table代替用於生成日期列表的遞歸CTE。
DECLARE @t TABLE(startdate DATETIME , enddate DATETIME)
INSERT INTO @t
SELECT '8/01/2009','08/31/2009' UNION ALL
SELECT '2/01/1900','02/28/1900' UNION ALL
SELECT '10/01/1959','10/31/1959'
DECLARE @n INT
SET @n = DATEDIFF(dd,'19000201','20090831') + 1
;WITH base
AS
(
SELECT 1 AS n
UNION ALL
SELECT n+1 FROM base
WHERE n < CEILING(SQRT(@n))
)
,cross_cte
AS
(
SELECT 0 AS c
FROM base AS b1
,base AS b2
)
,dates_cte
AS
(
SELECT TOP(@n) CAST('19000201' AS DATETIME) - 1 + ROW_NUMBER() OVER(ORDER BY c) AS date
FROM cross_cte
)
SELECT DISTINCT d.DATE
FROM Dates_Cte d
JOIN @t t
ON d.DATE BETWEEN t.startdate AND t.enddate
OPTION (MAXRECURSION 0);
雖然:
如果你不能或者不願意使用一個數字表,日期範圍CTE的性能可以使用由伊茨克奔甘建議的方法大範圍提高執行計劃顯示此版本效率略低於原始版本(=〜1%),在我的系統上使用SET STATISTICS TIME
進行測量顯示此版本的已用時間和CPU時間均小於您的一半。
+0
@ priyanka.bangalore - 該技術涉及有效地使用CTE生成大範圍的數字,而不是專門針對日期。我認爲它出自Solid Quality Learning的「Inside SQL Server 2005」書籍之一 - 我認爲T-SQL編程之一 - http://www.amazon.co.uk/gp/product/0735621977 – 2010-02-25 09:51:28
相關問題
- 1. Asp.net日曆 - 生成日期
- 2. 生成日曆Python網頁
- 3. 圖標日曆生成器
- 4. 生成日曆日期列表
- 5. PHP在Google日曆中生成日曆 - 無效網址
- 6. 如何從簡單的日曆寶石生成日曆
- 7. 生成Google日曆兼容Feed
- 8. Rails遷移以生成日曆表
- 9. 在mysql/php中生成每週日曆
- 10. 生成動態日曆控件
- 11. 在iframe中生成多個日曆
- 12. FullCalendar加載ajax不會生成日曆
- 13. primefaces-3.3.1生日日曆
- 14. 使用日曆表生成數據的歷史視圖
- 15. KAL日曆集成
- 16. 以日曆日期爲列標題生成表格
- 17. 在Codeigniter日曆中爲每個日期生成唯一的URL
- 18. 如何生成可移動節日的日曆?
- 19. 使用一個查詢生成日曆直到特殊日期
- 20. wscompile JAX-RPC生成日曆對象而不是日期
- 21. JS,jquery,全日曆,學生
- 22. 驗證出生日期註冊日曆
- 23. 使用iOS日曆同步FaceBook生日
- 24. PhoneGap Android日曆集成
- 25. magento谷歌日曆集成
- 26. 集成OpenTok和Google日曆
- 27. 將Fecha轉換成日曆
- 28. Windows Mobile日曆集成
- 29. 生成兩個日期之間的年,月和日的平面日曆佈局
- 30. Python生成器遍歷樹
爲什麼你不想使用基於集合的數字表方法? – 2010-02-25 05:49:59