-- 获取月度列表
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)
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 @sResult
end
GO-- Test
exec proc_GetDateMonthList '201210', '201512'

  

转载于:https://www.cnblogs.com/junko/p/3726225.html

SQL Server获取月度列表相关推荐

  1. Sql Server获取数据库名,表信息,字段信息,主键信息等

    --Sql Server获取数据库名,表信息,字段信息,主键信息等--获取所有数据库名: SELECT name FROM master..sysdatabases WHERE name NOT IN ...

  2. sql server 获取本机的ip地址

    --sql server 获取本机的ip地址 -- 其实就是使用xp_cmdshell 来获取信息,然后对信息进行筛选. --开启xp_cmdshell exec sp_configure 'show ...

  3. 使用SQL Server 获取插入记录后的ID(自动编号)

    使用SQL Server 获取插入记录后的ID(自动编号) jingxian 本篇文章是对使用SQL Server获取插入记录后的ID(自动编号)的方法进行了详细的分析介绍,需要的朋友参考下 最近在开 ...

  4. 使用SQL Server 获取插入记录后的自增ID(自动编号)

    http://www.jb51.net/article/39029.htm 本篇文章是对使用SQL Server获取插入记录后的ID(自动编号)的方法进行了详细的分析介绍,需要的朋友参考下 最近在开发 ...

  5. sql server 获取当前日期前12个月的月份sql 语句

    sql server 获取当前日期前12个月的月份sql 语句 select convert(varchar(7),dateadd(mm,number,dateadd(month,-11,getdat ...

  6. SQL server获取数据库数据

    SQL server获取数据库数据 两表对比,查询A表中缺少的字段 例如 获取数据库指定表中的列 例如 获取某个存储过程的参数 两表对比,查询A表中缺少的字段 select a.name as nam ...

  7. SQL Server获取特定字符前的数字

    关于Sql Server如何获取特定字符前的数字,网上有很多答案,但感觉要么太局限,要么就是太复杂,下面是我如何实现获取特定字符前的数字这个功能,供大家参考. /*获取特定字符前的数字*/ DECLA ...

  8. php sql查看本月记录,SQL Server 获取本周,本月,本年等时间内记录

    datediff(week,zy_time,getdate())=0 //查询本周 datediff(month,zy_time,getdate())=0 //查询本月 本季:select * fro ...

  9. SQL Server获取当年第一天当年最后一天当月第一天当月最后一天

    SQL Server 对日期的操作函数的使用 在编写sql的时候,会碰到对日期的处理,特别是日期区间对业务数据的限制. 如:用户数据的是一个固定月份 2020-03 这个时候需要匹配数据就是2020- ...

  10. sql server获取当前日期

    问题引出: Sql Server 里 dateTime 数据类型,会精确到毫秒.如果我们 在插入一条数据的时候,使用 GetDate() 记录 这个记录插入的时间,则会插入当前时间,精确到毫秒.在查询 ...

最新文章

  1. 气象背景场_“把脉”风雨 服务为民——甘肃研究型气象预报业务体系发展扫描...
  2. vim 多行添加注释,取消注释
  3. java 不可修改的map_Java中如何实现不可变Map详解
  4. (进阶篇)Redis6.2.0 集群 主从复制_搭建_01
  5. 在linux上禁用ip,防止frps转发的端口被爆破,并屏蔽境外ip
  6. Python进阶全系列
  7. win7 计算器 android,win7计算器
  8. 基于程序员职业对于婚配问题的研究——程序员为何单身?
  9. interface 相关知识
  10. wxid 转微信号 如何找到原始id教程
  11. excel合并sheet表格
  12. 用 PHP-GTK2 做 Win32 GUI 程序
  13. DL在地球物理中的应用及发展趋势
  14. Js设置动态的key指
  15. Google Chrome 81.0.4044.138 绿色增强版
  16. 适合Linux系统的笔记本推荐,推荐5款让你的旧电脑重获新生的Linux发行版
  17. 【查找各日期段内的银行贷款利率问题】
  18. 为什么外链建设对于谷歌SEO至关重要?
  19. 计算机专业的职业探索,职业教育计算机教学的探索
  20. 《道德经》与“低熵”思想炫酷实现(.html)

热门文章

  1. LU分解的矩阵逆运算
  2. 微信公众号测试账号获取授权须关注
  3. 项目中用到的一些特殊字符和图标
  4. Aria2 - OS X 下载百度云资源神器
  5. [转]VC 键盘虚拟码
  6. Python操作SQLAlchemy
  7. ubuntu-12.04.5-desktop-amd64.iso:ubuntu-12.04.5-desktop-amd64:安装Oracle11gR2
  8. Oracle数据导入导出imp/exp sp2-0734:未知的命令开头'imp...解决方法
  9. UITextfiled 的属性注释简介
  10. 2012年4月份第2周51Aspx源码发布详情