以下の関数は、週末を差し引いて 2 つの日付間の合計時間を計算します。2 つの日付が 1 日以上異なる場合は問題なく動作しますが、1 日以内に結果がマイナスになります。よくわかりません。誰でも修正できますか?
ALTER FUNCTION [dbo].[Gettotalhours]
(
@startdate datetime2,@enddate datetime2
)
RETURNS bigint
AS
BEGIN
declare @dateweekends int
declare @totaltime bigint
Set @Dateweekends =
(DATEDIFF(wk, @StartDate, @EndDate) * 2)
+(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)
+(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END)
set @totaltime= DATEDIFF(second,@StartDate,@EndDate)-@dateweekends*24*60*60
return @totaltime
END