• -- Some alternative date arithmetic

    SELECT

    o.Forecasted_Commencement_Renewal_Date__c,

    CAST(RTRIM(CAST(MONTH(DATEADD(mm, 1, o.Forecasted_Commencement_Renewal_Date__c)) AS CHAR(2))) + '/01/' + CAST(YEAR(o.Forecasted_Commencement_Renewal_Date__c) AS CHAR(4)) AS DATETIME),

    DATEADD(MONTH,DATEDIFF(MONTH,0,Forecasted_Commencement_Renewal_Date__c)+1,0),

    CAST((CAST(YEAR(GETDATE()) AS CHAR(4)) + CASE WHEN LEN(CAST(MONTH(GETDATE()) AS CHAR(2))) < 2 THEN '-0' + CAST(MONTH(GETDATE()) AS CHAR(1)) ELSE '-' + CAST(MONTH(GETDATE()) AS CHAR(2)) END + '-01') AS SMALLDATETIME) AS SnapShotPeriod,

    CAST(DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0) AS SMALLDATETIME)

    FROM (SELECT Forecasted_Commencement_Renewal_Date__c = GETDATE()) o

    -- here's how it works

    SELECT DATEDIFF(MONTH,0,GETDATE()) -- 1374

    SELECT DATEADD(MONTH,1374+1,0) -- 2014-08-01 00:00:00.000

    SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())+1,0) -- 2014-08-01 00:00:00.000

    SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0) -- 2014-07-01 00:00:00.000

    “Write the query the simplest way. If through testing it becomes clear that the performance is inadequate, consider alternative query forms.” - Gail Shaw

    For fast, accurate and documented assistance in answering your questions, please read this article.
    Understanding and using APPLY, (I) and (II) Paul White
    Hidden RBAR: Triangular Joins / The "Numbers" or "Tally" Table: What it is and how it replaces a loop Jeff Moden