--My sample uses yyyy-mm-dd (UK date format)

declare @startDate datetime
set @startDate = '2008-11-25'

-- First day of the month
select DATEADD(mm, DATEDIFF(mm,0,@startDate), 0) as [First day of the month]

-- First day of the week
select DATEADD(wk, DATEDIFF(wk,0,@startDate), 0) as [First day of the week]

-- First day of the year
select DATEADD(yy, DATEDIFF(yy,0,@startDate), 0) as [First day of the year]

-- Last day of prior month
select DATEADD(dd,-1,DATEADD(mm, DATEDIFF(mm,0,@startDate), 0)) as [Last day of prior month]

-- Last day of prior year
select DATEADD(dd,-1,DATEADD(yy, DATEDIFF(yy,0,@startDate), 0)) as [Last day of prior year]

-- Last day of month
select DATEADD(dd,-1,DATEADD(mm, DATEDIFF(mm,0,@startDate)+1, 0)) as [Last day of month]

-- Last day of year
select DATEADD(dd,-1,DATEADD(yy, DATEDIFF(yy,0,@startDate)+1, 0)) as [Last day of year]