我想要两个日期之间的唯一月份喜欢
@StartDate = '04-05-2013'
@EndDate = '26-12-2013'
我想要这样的输出
5 6 7 8 9 10 11 12
我还想使用带有上述输出的光标如何使用sql服务器获取它
一般来说,您可以使用如下所示的脚本来获取所需的值。我不明白你是否需要一个结果集,所以脚本只是为每个月返回一个结果集:根据需要随意修改它,即使将代码与(现有的?)游标相关脚本混合:
DECLARE @StartDate datetime = '2013-05-04'
DECLARE @EndDate datetime = '2013-12-26'
WHILE (@StartDate < @EndDate)
BEGIN
SELECT MONTH(@StartDate)
SET @StartDate = DATEADD(month, 1, @StartDate)
END
另请注意,这是一个起点:出于性能原因,您可能需要以某种方式考虑查看整个查询。
如果您只需要月份数,那么您可以获得两个日期之间的月份之差并将其递增以获得结果,如下所示:
DECLARE @StartDateMonth int = DATEPART(mm, '2013-05-04')
DECLARE @EndDateMonth int = DATEPART(mm,'2013-12-26')
WHILE (@StartDateMonth <= @EndDateMonth )
BEGIN
SELECT @StartDateMonth
SET @StartDateMonth = @StartDateMonth + 1
END