将日期添加7天,直到月末sql server

时间:2015-10-07 03:23:49

标签: sql sql-server

我想找到一个月的第一天添加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`

1 个答案:

答案 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