如果日期是2015年1月1日至2016年1月1日,请说明
我希望以月为单位格式化这些日期,然后在游标中的变量中使用它们来循环
例如,每月日期应为2015年1月1日和2015年1月31日,并在2个变量中使用这两个值并进行循环,直到它永远不会结束整个日期范围,即01/01/2016
答案 0 :(得分:0)
首先创建一个数字表。这个数字代表几个月,几天,你需要的任何东西。
SELECT TOP 10000 N=IDENTITY(INT, 0, 1)
INTO dbo.Numbers
FROM master.dbo.syscolumns a CROSS JOIN master.dbo.syscolumns b;
我建议您阅读此帖以获取更多信息https://dba.stackexchange.com/questions/11506/why-are-numbers-tables-invaluable
然后创建月度日期列表
declare @DateIni datetime, @DateEnd datetime
set @DateINI='20150101'
set @DateEnd='20160101'
select DATEADD(m,n,@dateini) as 'month' from Numbers
where n<=DATEDIFF(mm,@dateini,@DateEnd)
和每日日期(注意我将DATEADD参数从'mm'更改为'dd')
declare @DateIni datetime, @DateEnd datetime
set @DateINI='20150101'
set @DateEnd='20150131'
select DATEADD(dd,n,@dateini) as 'month' from Numbers
where n<=DATEDIFF(dd,@dateini,@DateEnd)