Use [EnVisage] IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[GetFCWeekEndForDate]') AND type IN ( N'FN', N'IF', N'TF', N'FS', N'FT' )) DROP FUNCTION [dbo].[GetFCWeekEndForDate] GO CREATE FUNCTION GetFCWeekEndForDate (@dt date) RETURNS date AS BEGIN DECLARE @ret date DECLARE @maxDate date DECLARE @weekStart date DECLARE @weekEnd date if (@dt is null) return null select @maxDate = MAX(EndDate) from FiscalCalendar where ([Type] = 0) if (@dt >= @maxDate) set @ret = null else begin select top 1 @weekStart = StartDate, @weekEnd = EndDate from FiscalCalendar where ([Type] = 0) and (StartDate <= @dt) and (EndDate >= @dt) if (@weekStart is null) set @ret = @dt else begin if (@dt = @weekEnd) set @ret = @weekEnd else set @ret = DATEADD(day, -1, @weekStart) end end RETURN @ret END GO