對於我正在使用的當前項目,我需要根據日期範圍返回彙總報告。T/SQL中的日期範圍
我有3種類型的報告,每年,每月和每日。
爲了幫助返回這份報告,我需要一個函數來返回大範圍內的所有日期時間的子範圍。
因此,例如,如果我作爲'2006-01-01 11:10:00'和'2006-01-05 08:00:00'之間的所有日常範圍,我會期待以下結果。
select *
from dbo.fnGetDateRanges('d', '2006-01-01 11:10:00', '2006-01-05 08:00:00')
2006-01-01 11:10:00.000, 2006-01-02 00:00:00.000
2006-01-02 00:00:00.000, 2006-01-03 00:00:00.000
2006-01-03 00:00:00.000, 2006-01-04 00:00:00.000
2006-01-04 00:00:00.000, 2006-01-05 00:00:00.000
2006-01-05 00:00:00.000, 2006-01-05 08:00:00.000
對於'2006-01-01 11:10:00'到'2009-05-05 08:00:00'的年度範圍,我會期待。
select *
from dbo.fnGetDateRanges('y', '2006-01-01 11:10:00', '2009-05-05 08:00:00')
2006-01-01 11:10:00.000, 2007-01-01 00:00:00.000
2007-01-01 00:00:00.000, 2008-01-01 00:00:00.000
2008-01-01 00:00:00.000, 2009-01-01 00:00:00.000
2009-01-01 00:00:00.000, 2009-05-05 08:00:00.000
我該如何實現這個功能?
這可以工作,但是我發現它比mssql的表函數解決方案少一點優雅。如果我真的需要一些適用於很多不同dbs的東西,那麼基於集合的選項可能是唯一的選擇。 – 2008-10-13 06:12:59