2015-10-07 3 views
-1

Я хочу, чтобы первый день месяца добавлял 7 дней, и продолжайте добавлять 7 дней, не переходя через доступные дни, оставшиеся в этом месяце. Примердобавление 7 дней до даты до конца месяца sql server

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

Microsoft SQL @James – Bips4u

+0

Непонятно, что вы спрашиваете. Вы находитесь в хранимой proc/trigger/etc, выполняющей некоторую логику, или пытаетесь вернуть определенный набор результатов с запросом? –

ответ

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 
Смежные вопросы