/*Current Date*/
select GETDATE() CurrentDate
----First Day of Current Month
select DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)
FirstDay_CurrentMonth
----First Day of Next Month
select DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0)
FirstDay_NextMonth
----Last Day of Previous Month
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))
LastDay_PreviousMonth
----Last Day of Current Month
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))
LastDay_CurrentMonth
----Last Day of Next Month
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+2,0))
LastDay_NextMonth
DECLARE @dtDate DATETIME
SET @dtDate = '5/17/2012'
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dtDate)+1,0))
LastDay_AnyMonth