我需要在给定的开始日期,结束日期和时间频率(每周,每月等)上生成记录。
示例1:
生成的报告:
1月15日至1月31日
2月1日 - 2月28日(2月29日闰年)
3月1日至3月31日
。 。
示例-2
生成的报告:
1月1日至1月16日
1月2日至17日 - 1月23日
1月3月24日至1月30日
。 。
与季度相同。
任何帮助
答案 0 :(得分:1)
我认为你所问的基本上是如何循环数月/周/季。
这应该会给你一个良好的开端,让你指出我希望的正确方向。您只需要使用内置的SQL日期函数(如DATEADD, DATEDIFF & DATEPART
DECLARE @startDate DATETIME
DECLARE @endDate DATETIME
DECLARE @TimePeriod NVARCHAR(50)
DECLARE @RptDate DATETIME
SET @startDate = '1/15/2011'
SET @endDate = '12/31/2011'
SET @TimePeriod = 'Monthly'
SET @RptDate = @startDate
WHILE @RptDate < @endDate
BEGIN
PRINT @RptDate --- This prints out the dates I think you want
IF @TimePeriod = 'Monthly'
SET @RptDate = DATEADD(mm, 1, DATEADD(dd, -DAY(@RptDate) + 1,@RptDate))
IF @TimePeriod = 'Weekly'
SET @RptDate = DATEADD(ww, 1, DATEADD(dd, -DATEPART(weekday,@RptDate) + 1,@RptDate))
IF @TimePeriod = 'Quarterly'
SET @RptDate = DATEADD(qq, 1, DATEADD(qq, DATEDIFF(qq, 0, @RptDate), -1) + 1)
END