300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > SQL Server获取月度列表

SQL Server获取月度列表

时间:2020-01-18 05:28:13

相关推荐

SQL Server获取月度列表

-- 获取月度列表if exists(select 1 from sysobjects where name = 'proc_GetDateMonthList' and type = 'p')drop proc proc_GetDateMonthListGOcreate proc proc_GetDateMonthList@BeginDate varchar(6),@EndDate varchar(6),@Delimiter varchar(1) = ','as/**/declare@iBegin int, @iEnd int, @iBeginMon int, @iEndMon int, @iYear int, @iMon int, @iTempYear int, @iTempMon int, @iStart int , @iStop int,@sBeginMon varchar(2), @sEndMon varchar(2), @sResult varchar(8000), @s varchar(6)beginif (LEN(@BeginDate) <> 6) or (LEN(@EndDate) <> 6)beginraiserror('日期格式错误!', 16, 1)returnendif (CAST(@EndDate as int) - cast(@BeginDate as int)) < 0beginraiserror('日期范围错误!', 16, 1)returnendif @BeginDate = @EndDatebeginselect @BeginDatereturnendselect @iBegin = SUBSTRING(@BeginDate, 1, 4), @iEnd = SUBSTRING(@EndDate, 1, 4)set @iYear = @iEnd - @iBeginif @iYear < 0beginraiserror('日期范围错误!', 16, 1)returnendif @iYear > 90beginraiserror('日期范围错误,最大跨年限度为90年!', 16, 1)returnend-- 开始处理set @sResult = ''select @iBeginMon = SUBSTRING(@BeginDate, 5, 2), @iEndMon = SUBSTRING(@EndDate, 5, 2)-- 不跨年if @iYear = 0beginset @iMon = @iEndMon - @iBeginMon if @iMon > 0beginset @sResult = @BeginDateset @iTempMon = 0while @iTempMon < @iMon - 1beginset @s = CAST(@BeginDate as int) + 1set @sResult = @sResult + @Delimiter + @sset @iTempMon = @iTempMon + 1 endset @sResult = @sResult + @Delimiter + @EndDateend end-- 跨年if @iYear > 0begin-- 从开始到结束,每次+1,当月份 > 12 年度进1,月度归1select @iStart = @BeginDate, @iStop = @EndDatewhile @iStart <= @iStopbeginselect @iTempYear = SUBSTRING(convert(varchar(6),@iStart), 1, 4), @iTempMon = SUBSTRING(convert(varchar(6),@iStart), 5, 2)if @iTempMon > 12beginset @iStart = (@iTempYear + 1)*100 + 1endset @s = CONVERT(varchar(6), @iStart)--整合结果if LEN(@sResult) = 0set @sResult = @selseset @sResult = @sResult + @Delimiter + @sset @iStart = @iStart + 1endendselect @sResultendGO-- Testexec proc_GetDateMonthList '10', '12'

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。