2015-10-07 84 views
-1

我想找到每月的第一天添加7天,并继续增加7天不会超过当月剩余的可用天数。 示例添加7天到一个月的日期,直到月底sql服务器

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

什么牌子的SQL? – James

+0

微软SQL @James – Bips4u

+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