I have written a function to help me with my requirement. I am posting the code in case anyone needs it:
Declare @FirstDayOfMonth as Datetime
Declare @LastDayOfMonth as Datetime
Declare @CurrentDate as Datetime
Declare @MinDate as Datetime
Declare @MaxDate as Datetime
Declare @MaxWeekNo as int
Declare @PresentWeekNo as int
Set @CurrentDate = '31 October 2010'
set @FirstDayOfMonth = DATEADD(month,(DATEDIFF(month,0,@CurrentDate)), 0)
set @LastDayOfMonth = dateadd(mm,1,@CurrentDate - day(@CurrentDate)+1)-1
set @MaxWeekNo = dbo.FINDINWEEK(@LastDayOfMonth)
set @PresentWeekNo = dbo.FINDINWEEK(@CurrentDate)
set @MinDate =
Case when @PresentWeekNo = 1 then
CAST(MONTH(@CurrentDate) AS VARCHAR(2))+'/'+'1'+'/'+ CAST(YEAR(@CurrentDate) AS VARCHAR(4))
Else
DATEADD(dd,-(DATEPART(dw, @CurrentDate) - 1),@CurrentDate)
End
set @MaxDate =
Case when @MaxWeekNo = 4 then
Case when @PresentWeekNo = 4 then
CAST(MONTH(@CurrentDate) AS VARCHAR(2))+'/'+CAST(day(@LastDayOfMonth) as VARCHAR(2))+'/'+ CAST(YEAR(@CurrentDate) AS VARCHAR(4))
Else
DATEADD(dd,-(DATEPART(dw, @CurrentDate) - 7),@CurrentDate)
End
when @MaxWeekNo = 5 then
Case when @PresentWeekNo = 5 then
CAST(MONTH(@CurrentDate) AS VARCHAR(2))+'/'+CAST(day(@LastDayOfMonth) as VARCHAR(2))+'/'+ CAST(YEAR(@CurrentDate) AS VARCHAR(4))
Else
DATEADD(dd,-(DATEPART(dw, @CurrentDate) - 7),@CurrentDate)
End
when @MaxWeekNo = 6 then
Case when @PresentWeekNo = 6 then
CAST(MONTH(@CurrentDate) AS VARCHAR(2))+'/'+CAST(day(@LastDayOfMonth) as VARCHAR(2))+'/'+ CAST(YEAR(@CurrentDate) AS VARCHAR(4))
Else
DATEADD(dd,-(DATEPART(dw, @CurrentDate) - 7),@CurrentDate)
End
End
Print @MinDate
Print @MaxDate