当日期持续时间增加时,循环会花费很多时间

时间:2018-08-15 07:23:09

标签: sql sql-server

我有此功能,可以计算2个日期内的时间。当日期之间的持续时间增加导致代码引发异常时,执行时间将超过。

我希望有人能提供帮助。

CREATE FUNCTION [dbo].[fnCalTotalOTHoursSpent] (@empCode INT, @StartDate DATETIME, @EndDate DATETIME) RETURNS INT
AS
BEGIN
DECLARE  @Result INT = '0'

WHILE @StartDate < @EndDate
BEGIN
  SELECT @Result = @Result + 
    SUM(ISNULL(CAST(LTRIM(DATEDIFF(MINUTE, 0, LEFT([dbo].[fnGetOTDuration](CAST (@empCode AS NVARCHAR), @StartDate), 5)))AS INT), 0))
   SET @StartDate = @StartDate + 1;

END;

RETURN @Result
END

此功能[dbo].[fnGetOTDuration]计算一天的时间。对于1至3之间的日期,执行时间为1秒,而当1至6之间的日期,执行时间为3秒。

0 个答案:

没有答案