我想找到一个月的第一天添加7天并继续添加7天不会超过该月剩余的可用天数。 实施例
July 1 – 7 --> 7 Days
July 8 – 14 --> 7 Days
July 15 – 21 --> 7 Days
July 22 – 28 --> 7 Days
July 29 - 31 --> 3 Days`
答案 0 :(得分:0)
这对我有用。可以概括为不必在本月的第一天开始,并且可能有一种更紧凑的方式来做到这一点,但这可以完成工作。
declare @month varchar(2) = '10',
@year varchar(4) = '2015',
@fullWeekCount int;
declare @firstOfTheMonth datetime = @year + '-' + @month + '-1';
declare @daysInMonth int = datediff(day, @firstOfTheMonth, dateadd(month, 1, @firstOfTheMonth))
select @fullWeekCount = (@daysInMonth / 6)
declare @i int = 1,
@startDate datetime = @firstOfTheMonth,
@endDate datetime;
declare @dates table (StartDay datetime, EndDay datetime);
while (@i <= @fullWeekCount)
begin
if (@i = @fullWeekCount)
set @endDate = @year + '-' + @month + '-' + cast(@daysInMonth as varchar(2));
else
set @endDate = dateadd(day, 6, @startDate)
insert into @dates (StartDay, EndDay)
values (@startDate, @endDate)
set @startDate = dateadd(day, 1, @endDate)
set @i = @i + 1;
end
select * from @dates d