Для текущего проекта, в котором я работаю, мне нужно вернуть сводный отчет на основе диапазонов дат.
У меня есть 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
Как бы я реализовал эту функцию?