I have a table of startTime and endTimes. I need to generate a table of intervals between those two dates in minutes. Here's some sample data:
declare @intervalMinutes int = 10
declare @myDates table (
myId int primary key identity,
startTime datetime,
endTime datetime
)
insert @myDates (startTime, EndTime) values ('2016-07-10 08:00','2016-07-10 09:00')
insert @myDates (startTime, EndTime) values ('2016-07-12 10:00','2016-07-12 12:00')
insert @myDates (startTime, EndTime) values ('2016-07-14 12:30','2016-07-14 14:30')
What I'd like to see is for each myId
a set of dates of interval @intervalMinutes
.
So if we had @intervalMinutes
set to 10 then I'd see for the first row a list of 6 dates between 2016-07-10 08:00
and 2016-07-10 09:00
in 10 minute increments.
You can use recursive query like this :
A numbers table can solve your problem. Assuming you don't need more than a few thousand rows, then this should work:
A numbers/tally table would do the trick as Gordon mentioned. However, I use a UDF to create dynamic date ranges.
For example
Returns
The UDF