db Time Parameter(00:15) 、 StartTime(09:00) 、 EndTime (15:00) に 3 つの列があります。
今度は、09:00 と 15:00 の間の 00:15 分のギャップですべての時間を表示したい
次のような値を返すには、どのクエリを作成する必要がありますか。
09:00 - 09:15
09:15 - 09:30
09:30 - 09:45
-
-
-
-
14:45 - 15:00
db Time Parameter(00:15) 、 StartTime(09:00) 、 EndTime (15:00) に 3 つの列があります。
今度は、09:00 と 15:00 の間の 00:15 分のギャップですべての時間を表示したい
次のような値を返すには、どのクエリを作成する必要がありますか。
09:00 - 09:15
09:15 - 09:30
09:30 - 09:45
-
-
-
-
14:45 - 15:00
CTE を使用し、次のように仮定し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