27,581
社区成员
发帖
与我相关
我的任务
分享set nocount on
declare @start datetime
declare @end datetime
set @end='23:00 '
set @start='08:30'
declare @t table(dt datetime)
while @start<@end
begin
insert @t select @start
set @start=dateadd(mi,20,@start)
end
select convert(varchar(10),dt,108) from @t
/*
----------
08:30:00
08:50:00
09:10:00
09:30:00
09:50:00
10:10:00
10:30:00
10:50:00
11:10:00
11:30:00
11:50:00
12:10:00
12:30:00
12:50:00
13:10:00
13:30:00
13:50:00
14:10:00
14:30:00
14:50:00
15:10:00
15:30:00
15:50:00
16:10:00
16:30:00
16:50:00
17:10:00
17:30:00
17:50:00
18:10:00
18:30:00
18:50:00
19:10:00
19:30:00
19:50:00
20:10:00
20:30:00
20:50:00
21:10:00
21:30:00
21:50:00
22:10:00
22:30:00
22:50:00
*/DECLARE @start_dt DATETIME,@end_dt DATETIME;
SELECT @start_dt='8:30',@end_dt='23:00';
DECLARE @step INT;
SET @step=20;
SELECT
CONVERT(VARCHAR(5),DATEADD(minute,@step*number,@start_dt),108) AS dt
FROM master.dbo.spt_values
WHERE type='p'
AND DATEADD(minute,@step*number,@start_dt)<=@end_dt
/*
dt
-----
08:30
08:50
09:10
09:30
09:50
10:10
10:30
10:50
11:10
11:30
11:50
12:10
12:30
12:50
13:10
13:30
13:50
14:10
14:30
14:50
15:10
15:30
15:50
16:10
16:30
16:50
17:10
17:30
17:50
18:10
18:30
18:50
19:10
19:30
19:50
20:10
20:30
20:50
21:10
21:30
21:50
22:10
22:30
22:50
(44 行受影响)
*/