需求:领导要求写时间段算法,格式如下
07:00-08:0008:00-09:0009:00-10:0010:00-11:0011:00-12:0012:00-13:0013:00-14:0014:00-15:0015:00-16:0016:00-17:0017:00-18:0018:00-19:0019:00-20:0020:00-21:0021:00-22:0022:00-23:00
07:00-07:3007:30-08:0008:00-08:3008:30-09:0009:00-09:3009:30-10:0010:00-10:3010:30-11:0011:00-11:3011:30-12:0012:00-12:3012:30-13:0013:00-13:3013:30-14:0014:00-14:3014:30-15:0015:00-15:3015:30-16:0016:00-16:3016:30-17:00
一小时制比较好解决,直接循环即可
--如果是一小时时间段DECLARE @a INTSET @a=7WHILE @a<23BEGINPRINT REPLICATE('0',2-len(@a))+CAST(@a AS VARCHAR(10))+':00-'+REPLICATE('0',2-len(@a+1))+CAST(@a+1 AS VARCHAR(20))+':00'SET @a=@a+1END
半小时制
--如果是半小时时间段--07:30-23:30DECLARE @start VARCHAR(20)DECLARE @end VARCHAR(20)SET @start='07:00'SET @end='22:00'DECLARE @b INTSET @b=CAST(LEFT(@start,2) AS INT)--取小时数WHILE @b0)--如果开始时间包含半小时BEGINPRINT @str+':'+'30'+'-'+@str1+':00'IF((@str1+':00')=@end)BREAKPRINT @str1+':00'+'-'+@str1+':30'ENDELSEBEGINPRINT @str+':00'+'-'+@str+':30'PRINT @str+':'+'30'+'-'+@str1+':00'IF(@b=(CAST(LEFT(@end,2)AS INT)-1) and CHARINDEX('30',@end)>0)--如果结尾时间有半小时PRINT @str1+':'+'00'+'-'+@str1+':30'ENDSET @b=@b+1END
半小时制感觉写的不好,智商捉鸡,欢迎各路大神指正。