As a caveat this is pre-first morning tea, but should work.
DECLARE @StartDate DATETIME = '2016-06-21 16:57:11.093',
@EndDate DATETIME = '2016-09-30 00:00:00.000';
SELECTMonthStartDate = DATEADD(MONTH, DATEDIFF(MONTH, 0, @StartDate) + N,0),
MonthEndDate = DATEADD(MONTH,DATEDIFF(MONTH,0,@StartDate)+ N + 1, 0)-1
FROMdbo.GetNums(0,DATEDIFF(MONTH,@StartDate,@EndDate));
dbo.GetNums is a numbers function that you should be able to find on this forum