我有3列在DB工作時間參數(00:15),開始時間(09:00),結束時間(15:00)怎樣才能顯示2個不同的時間參數之間的所有時間
現在我想展示我應該寫什麼查詢,以便它返回所有時間的00:15分的差距09:00和15:00
之間的值是這樣的:
09:00 - 09:15
09:15 - 09:30
09:30 - 09:45
-
-
-
-
14:45 - 15:00
我有3列在DB工作時間參數(00:15),開始時間(09:00),結束時間(15:00)怎樣才能顯示2個不同的時間參數之間的所有時間
現在我想展示我應該寫什麼查詢,以便它返回所有時間的00:15分的差距09:00和15:00
之間的值是這樣的:
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
使用公用表表達式(CTE)生成一個所有時間都在你想要的表格。
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)
你有一個滿桌子的這些行與參數,開始時間和結束時間,對不對?或者你只需要這個例子的解決方案? – Beth