declare @Date_received date = '2013-02-23';select @Date_received, dateadd(dd, -1, dateadd(wk, datediff(wk, cast('1900-01-01' as date), @Date_received), cast('1900-01-01' as date)))select @Date_received, DATEFROMPARTS(DatePart(yyyy,DATEADD(dd, (DATEPART(dw, @Date_received) - 1) * - 1, @Date_received)), DatePart(mm,DATEADD(dd, (DATEPART(dw, @Date_received) - 1) * - 1, @Date_received)), DatePart(dd,DATEADD(dd, (DATEPART(dw, @Date_received) - 1) * - 1, @Date_received)))
ALTER FUNCTION [dbo].[FctDateTime_FirstDayOfWeek]( @Date date)RETURNS datewith schemabindingASBEGINdeclare @firstDate datedeclare @Daysdiff int = dateDiff(dd,cast('1900-01-01' as date),@Date)%7select @firstDate = DATEADD(dd, @Daysdiff*-1, @Date) RETURN @firstDate END
Alter FUNCTION [dbo].[FctDateTime_FirstDayOfWeek2]( -- Add the parameters for the function here @Date date)RETURNS datewith schemabindingASBEGINdeclare @firstDate datedeclare @Daysdiff int = dateDiff(dd,(datefromparts('1900','01','01')),@Date)%7 --- ***Correct line. Cast is not determenisticselect @firstDate = DATEADD(dd, @Daysdiff*-1, @Date) RETURN @firstDate END
Alter FUNCTION [dbo].[FctDateTime_FirstDayOfWeek2]( -- Add the parameters for the function here @Date date)RETURNS datewith schemabindingASBEGINdeclare @firstDate datedeclare @Daysdiff int = dateDiff(dd,(CONVERT(datetime, '1900-01-01', 101)),@Date)%7 ---*** Changed line. Convert is determenistic. select @firstDate = DATEADD(dd, @Daysdiff*-1, @Date) RETURN @firstDate END