[英]How to split the specify date range into monthly wise in sql server and loop through each month to perform some operation
假設日期是2015年1月1日至2016年1月1日
我想明智地每月分割這些日期,然后在游標中的變量中使用它們來循環
例如,每月日期應為01/01/2015和01/31/2015並在兩個變量中使用這兩個值並進行循環,直到它永遠不會結束整個日期范圍(即01/01/2016)
首先創建一個數字表。 這個數字將代表幾個月,幾天,任何您需要的東西。
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.