对于我正在工作的当前项目,我需要返回基于日期范围的汇总报告。
我有 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
我该如何实现这个功能呢?