簡體   English   中英

如何在SQL Server中將指定的日期范圍划分為每月一次並循環遍歷每個月以執行一些操作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM