declare @d datetime='20120311'
--每个月的第一天
select dateadd(dd,-datepart(dd,@d)+1,@d)
--第个月的最后一天
select dateadd(dd,-datepart(dd,@d),dateadd(mm,1,@d))
--本月的天数
select datediff(dd,@d,dateadd(mm,1,@d))