SQL Server获取月度列表
-- 获取月度列表
if exists(select 1 from sysobjects where name = 'proc_GetDateMonthList' and type = 'p')
drop proc proc_GetDateMonthList
GO
create 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)
begin
if (LEN(@BeginDate) <> 6) or (LEN(@EndDate) <> 6)
begin
raiserror('日期格式错误!', 16, 1)
return
end
if (CAST(@EndDate as int) - cast(@BeginDate as int)) < 0
begin
raiserror('日期范围错误!', 16, 1)
return
end
if @BeginDate = @EndDate
begin
select @BeginDate
return
end
select @iBegin = SUBSTRING(@BeginDate, 1, 4), @iEnd = SUBSTRING(@EndDate, 1, 4)
set @iYear = @iEnd - @iBegin
if @iYear < 0
begin
raiserror('日期范围错误!', 16, 1)
return
end
if @iYear > 90
begin
raiserror('日期范围错误,最大跨年限度为90年!', 16, 1)
return
end
-- 开始处理
set @sResult = ''
select @iBeginMon = SUBSTRING(@BeginDate, 5, 2), @iEndMon = SUBSTRING(@EndDate, 5, 2)
-- 不跨年
if @iYear = 0
begin
set @iMon = @iEndMon - @iBeginMon
if @iMon > 0
begin
set @sResult = @BeginDate
set @iTempMon = 0
while @iTempMon < @iMon - 1
begin
set @s = CAST(@BeginDate as int) + 1
set @sResult = @sResult + @Delimiter + @s
set @iTempMon = @iTempMon + 1
end
set @sResult = @sResult + @Delimiter + @EndDate
end
end
-- 跨年
if @iYear > 0
begin
-- 从开始到结束,每次+1,当月份 > 12 年度进1,月度归1
select @iStart = @BeginDate, @iStop = @EndDate
while @iStart <= @iStop
begin
select @iTempYear = SUBSTRING(convert(varchar(6),@iStart), 1, 4), @iTempMon = SUBSTRING(convert(varchar(6),@iStart), 5, 2)
if @iTempMon > 12
begin
set @iStart = (@iTempYear + 1)*100 + 1
end
set @s = CONVERT(varchar(6), @iStart)
--整合结果
if LEN(@sResult) = 0
set @sResult = @s
else
set @sResult = @sResult + @Delimiter + @s
set @iStart = @iStart + 1
end
end
select @sResult
end
GO -- Test
exec proc_GetDateMonthList '201210', '201512'
SQL Server获取月度列表的更多相关文章
- SQL Server获取下一个编码字符串的实现方案分割和进位
我在前一种解决方案SQL Server获取下一个编码字符实现和后一种解决方案SQL Server获取下一个编码字符实现继续重构与增强两篇博文中均提供了一种解决编码的方案,考虑良久对比以上两种方 ...
- SQL Server获取下一个编码字符实现继续重构与增强
我在SQL Server获取下一个编码字符实现的博文中,虽然实现了这个问题,但是感觉维护起来比较麻烦,例如如果调整编码字符串的固定长度,就需要变更三个函数,这样的为何成本确实比较大.面向对象编 ...
- SQL SERVER获取数据库文件信息
MS SQL SERVER 获取当前数据库文件等信息,适用于多个版本: SELECT dbf.file_id AS FileID , dbf.name AS [FileName] , s.fi ...
- SQL Server获取指定行的数据
SQL Server获取指定行(如第二行)的数据 --SQL Server获取指定行(如第二行)的数据-- --法一(对象法)-- select * from ( select * , numbe ...
- 常用脚本--SQL Server获取OS日志
--=================================================== --SQL Server获取OS日志: ), ), ), ) select @start_d ...
- SQLServer数据库之SQL Server 获取本周,本月,本年等时间内记录
本文主要向大家介绍了SQLServer数据库之SQL Server 获取本周,本月,本年等时间内记录,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. datediff(we ...
- SQL Server获取下一个编码字符实现
周末看到SQL Server 大V潇湘隐者的获取下一个编码字符串问题,本来作为以上博文的回复,也许回复内容长度超过其允许限制,无法提交.鉴于此,特记录SQL Server实现过程,方便自己回顾和查阅. ...
- SQL Server 获取服务器信息
最近做了一个小工具,里面涉及到一些取SQL Server 服务器信息的一些东西,找了好久,找到一个不错的,贴出来分享. 系统函数 SERVERPROPERTY ( propertyname ) 包含要 ...
- C# 与Sql server 获取数据和执行命令
C#数据库命封装在 System.Data.SqlClient 之中: 从使用的数据库中获取连接串connectionstring:"server=xx.xxx.xx.xx,xxxx: da ...
随机推荐
- 运用CADisplayLink来开启定时器
CADisplayLink来开启定时器 CADisplayLink是以屏幕刷新频率将内容绘制到屏幕上的定时器,每秒60Hz.使用的时候,先创建一个CADisplayLink对象,将其添加到一个RunL ...
- hadoop作业缺少jar文件解决办法
1 可以使用maven把插件带入 2 把jar放到集群的jar文件目录下,然后重启集群
- jquery设置下拉菜单
jQuery代码 1,引用jQuery库 2,show方法 3,hide方法 <script type="text/javascript"> $function(){ ...
- uva1635
/* 哑元 组合数的递推整除判断_________________________________________________________________________________ #i ...
- JSON.parse() 和 JSON.stringify()
JSON.parse()和JSON.stringify() 1.parse 用于从一个字符串中解析出json 对象.例如 var str='{"name":"cpf& ...
- P1382 光棍组织
我现在TMD连dfs都不会写了 原题: MM 虽然一辈子只要一个,但是也得早点解决.于是,n 个光棍们自发组成了一个光棍组织(ruffian organization,By Wind 乱译).现在,光 ...
- virtualbox 使用USB引导启动安装系统
想要测试u盘系统引导有没有问题,从u盘中启动我烧录的Android x86系统. 这种方式可以在已有空的虚拟机上直接启动U盘中的系统. 百度上能搜到的方式都是使用CMD命令(懒人表示太麻烦--),so ...
- 《winform窗体应用程序》----------简易记事本
首先先给大家发表几张图片,描述一下记事本程序要实现的功能以及界面设计. 以上这些就是简易记事本的的主界面设计. 下面我们来做一些简单的讲解: 1.使用MenuStrip控件来实现菜单栏的基本设计. 在 ...
- WPF ListBox
记录一些ListBox的用法 设置ListBox选中项的背景颜色 如何为标准的ListBox添加ItemClick事件 连续选择同一项时SelectionChanged 事件不响应的问题 1.设置Li ...
- 《Javascript高级程序设计第3版》精华总结
一.JavaScript简介 1.1 javascript简史 1.2 javascript实现 + javascript是一种专为网页交互而设计的一种脚本语言,javascript由三大部分组成 ...