Вы можете переписать его как:
CREATE FUNCTION [dbo].[DATEDIFFWD](@interval varchar(2),
@ini datetime, @end datetime)
RETURNS int
AS
BEGIN
RETURN (SELECT CASE @interval
WHEN 'hh' THEN DATEDIFF(hh, @ini, @end) - ((DATEDIFF(WK, @ini, @end) * 48))
WHEN 'dd' THEN DATEDIFF(dd, @ini, @end) - ((DATEDIFF(WK, @ini, @end) * 2))
END
);
END
Обратите внимание, что скалярная функция может быть встроена, начиная с SQL Server 2019
дБ<> fiddle demo
Для лучшей производительности я бы вместо этого использовал табличную функцию:
CREATE FUNCTION [dbo].[DATEDIFFWD](@interval varchar(2),
@ini datetime, @end datetime)
RETURNS TABLE
AS
RETURN (
SELECT CASE @interval
WHEN 'hh' THEN DATEDIFF(hh, @ini, @end) - ((DATEDIFF(WK, @ini, @end) * 48))
WHEN 'dd' THEN DATEDIFF(dd, @ini, @end) - ((DATEDIFF(WK, @ini, @end) * 2))
END AS r
);