Comment puis-je montrer tout le time entre 2 parameters de time différents

J'ai 3 colonnes en db Time Parameter (00:15), StartTime (09:00), EndTime (15:00)

Maintenant, je veux montrer tout le time avec un écart de 00:15 min entre 09:00 et 15:00

Quelle requête dois-je écrire pour qu'il renvoie des valeurs quelque chose comme ceci:

09:00 - 09:15 09:15 - 09:30 09:30 - 09:45 - - - - 14:45 - 15:00 

En utilisant CTE et en supposant hour part of @time is zero :

 declare @time time(0) = '00:15', @start time(0) = '12:00', @end time(0) = '15:00' ;with cte as ( select @start sTime, dateadd(minute, datepart(minute,@time), @start) eTime union all select eTime, dateadd(minute, datepart(minute,@time), eTime) from cte where dateadd(minute, datepart(minute,@time), eTime) <= @end ) select left(sTime,5) + ' - ' + left(eTime, 5) results from cte --results 12:00 - 12:15 12:15 - 12:30 12:30 - 12:45 12:45 - 13:00 13:00 - 13:15 13:15 - 13:30 13:30 - 13:45 13:45 - 14:00 14:00 - 14:15 14:15 - 14:30 14:30 - 14:45 14:45 - 15:00 

Utilisez une expression de table commune (CTE) pour générer une table avec toutes les heures que vous voulez.

 Declare @strtDt smallDatetime = '15 May 2013 09:00'; Declare @endDt smallDateTime = '15 May 2013 15:00'; With DateTimes(dt) As (Select @strtDt Union All Select DateAdd(minute, 15, dt) From DateTimes Where dt < @endDt) Select dt from DateTimes option (maxrecursion 10000)