日期:2014-05-17  浏览次数:20396 次

sql存储过程问题(菜鸟求解)(在线等)(SOS)
在sql存储过程中有两个参数是nvarchar的类型的201209和201212(随机的两个参数会变的)
怎么做才能得到A=201209 201210 201211 201212
这两个参数是yyyyMM也就是日期格式的
要得到的是日期月份的一个一个增加的
------解决方案--------------------
就是给一个变量C赋日期格式的值,要求其范围A<=C>=B且包含每一个满足条件的值 AB是为YYYYMM格式的日期。这就相当于C是一个数组,也就是实现数组功能。
数组就可以看为一个临时表,所以可以尝试把值存放在临时表中,再通过存储过程调用值
------解决方案--------------------

DECLARE @s NVARCHAR(100)='201209'
,@e nvarchar(100)='201212'

SELECT LEFT(@s,4)+RIGHT('00'+CAST(a.number AS varchar(2)),2) FROM master..spt_values a 
WHERE a.type='p' AND a.number BETWEEN CAST(RIGHT(@s,2) AS int) AND CAST(RIGHT(@e,2) AS int);

--------
201209
201210
201211
201212

--这个只支持同年的。