Вечером пятницы мне в голову приходит только такое:
| Код | declare @start datetime, @end datetime, @newstart datetime, @newend datetime declare @id integer
DECLARE Dates CURSOR FOR SELECT TablichkaId, StartDate, EndDate FROM Tablichka OPEN Dates FETCH NEXT FROM Dates INTO @id, @start, @end WHILE (@@FETCH_STATUS = 0) BEGIN set @newstart = DATEADD(dd, 1, @start) set @newend = DATEADD(dd, -1, @end)
while (DATEDIFF(mm, @start, @newstart) < 1) begin set @newstart = DATEADD(dd, 1, @newstart) end
while (DATEDIFF(mm, @newend, @end) < 1) begin set @newend = DATEADD(dd, -1, @newend) end
select @newstart, @newend, DATEDIFF(mm, @newstart, @newend) + 1 --update Tablichka set StartDate = @newstart, EndDate = @newend, MonthCount = DATEDIFF(mm, @newstart, @newend) + 1 where TablichkaId = @id FETCH NEXT FROM Dates INTO @id, @start, @end END CLOSE Dates DEALLOCATE Dates
|
Проверял без курсора на двух произвольных датах - работает. Курсор рисовал от нечего делать, поправишь его ежели пригодится.
Добавлено @ 17:32 Вай, вай, как расцветка кода плывет, ужасть |