在时间之间获得 30 分钟的间隔

Getting 30 minute slots between time

我有一个开始日期时间和一个结束日期时间。

Eg: 10:00 am - 12:00 pm

我必须在两者之间创建 4 个时段,每个时段 30 分钟。

Eg:  
10:00 am-10:30 am
10:30 am-11:00 am
11:00 am-11:30 am
11:30 am-12:00 pm

这 30 分钟可能会有所不同,而不是一个常数。我尝试了一些东西,但它们似乎不起作用。有人可以帮忙吗?谢谢。

我已经试过了,但我只得到插槽差异而不是 slotfrom-slotto

  SELECT 
   from_dt,to_dt,

   DATEDIFF(mi,DATEADD(dd,DATEDIFF(dd,0,from_dt ),0),to_dt )/60 as SlotNumber
FROM
   d
   group by  from_dt,to_dt, DATEDIFF(mi,DATEADD(dd,DATEDIFF(dd,0,from_dt ),0),to_dt )/60 

感谢@dwain.c to get Reference

--Declare table
DECLARE @t TABLE
(StartTime TIME, EndTime TIME)
INSERT INTO @t
SELECT '10:00', '12:00'
-- Make CTE
;WITH CTE (n) AS (
    SELECT TOP (SELECT DATEDIFF(MINUTE,StartTime,EndTime)/30
    FROM @t) 30*(ROW_NUMBER() OVER (ORDER BY (SELECT NULL))-1)
    FROM sys.all_columns
    )
-- QUERY
SELECT 
     TSStart=DATEADD(minute, n, StartTime)
    ,TSEnd=DATEADD(minute, n + 30, StartTime)
    ,Timeslot=CONVERT(VARCHAR(100), DATEADD(minute, n, StartTime), 0) + ' - ' +
        CONVERT(VARCHAR(100), DATEADD(minute, n + 30, StartTime), 0)
FROM @t
CROSS APPLY (
    SELECT n 
    FROM CTE 
    WHERE n BETWEEN 0 AND DATEDIFF(minute, StartTime, DATEADD(minute, -30, EndTime))) a
ORDER BY TSStart