Be careful with that query - if you're working with pure dates that may be fine, but if you're using datetime, you're losing the last day of the last month. It returns, for example, '2009-11-30 12:00:00 AM', but what you'd really want is '2009-11-30 23:59:99'.
You could compensate for this a few different ways. What I did was simply add the number of seconds in a day, minus 1 (86399 seconds):
select dateadd(mm,datediff(mm,0,getdate())-1,0) [FirstDate],
dateadd(s, 86399, dateadd(dd,-1,dateadd(mm,datediff(mm,0,getdate()),0))) [LastDate]