如何在SQL Server中生成两小时之间的小时数?

Esr*_*_92 2 sql sql-server time hour

我想生成一个小时到小时的小时列表,间隔为30分钟.

例如,员工在09:00进入工作岗位并在18:00离开,所以我想生成这样的:

Hours
-----
09:00
09:30
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
Run Code Online (Sandbox Code Playgroud)

我怎样才能生成这个?谢谢.

Kri*_*ana 6

使用递归CTE,您可以实现此结果.

尝试以下查询 -

DECLARE @timeFrom TIME = '09:00'
DECLARE @timeTo TIME = '18:00'

;with SourceHrs
as
(
    select @timeFrom as [Hours]
    UNION ALL
    SELECT DATEADD(MINUTE, 30, [Hours]) from SourceHrs WHERE [Hours] < @timeTo
)
SELECT CONVERT(VARCHAR(5),Hours,108) FROM SourceHrs
Run Code Online (Sandbox Code Playgroud)

结果

Hours
-------
09:00
09:30
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
Run Code Online (Sandbox Code Playgroud)