我需要循环一个月内的每一天,但固定的数字作为月份的最后一天。计算月份开始/结束时固定的月份最后一天
E.g.如果该月的最后一天被固定为30, 月将成为:
开始每月:2012年12月31日12:00 AM 月结束:2013年1月30日上午12:00
我已经实现了除了二月份之外,其他的工作都很完美。我似乎无法找到一个解决方案,无论月结束日期是多少,都能确保每个月都能正常工作。 任何建议,非常感谢。
DECLARE @dt DATETIME
DECLARE @DayInstance DATETIME
DECLARE @LastDayOfMonth DATETIME
DECLARE @monthEndDate INT = 30
SET @dt = '2012-01-01 00:00:00.000'
WHILE @dt < GETDATE()
BEGIN
SET @DayInstance = @dt
SET @LastDayOfMonth = (SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,@dt))),DATEADD(mm,1,@dt)),101))
IF @monthEndDate > 0
BEGIN
SET @LastDayOfMonth = DATEADD(DAY,(@monthEndDate-DATEPART(dd,@LastDayOfMonth)),@LastDayOfMonth)
SET @DayInstance = DATEADD(MONTH, -1, @LastDayOfMonth)
SET @DayInstance = DATEADD(DAY, 1, @DayInstance)
END
PRINT 'Month Start Date: ' + CAST(@DayInstance AS NVARCHAR(20))
PRINT 'Month End Date: ' + CAST(@LastDayOfMonth AS NVARCHAR(20))
PRINT ''
WHILE @DayInstance <= @LastDayOfMonth
BEGIN
-- Going to do more stuff here
SET @DayInstance = DATEADD(DAY, 1, @DayInstance)
END
SET @dt = DATEADD(MONTH, 1, @dt)
END
哇!谢谢你。就像你所做的那样,当然不是我想要的路线。似乎完美地工作。 :-) 非常感谢 – JIbber4568