首页 > 解决方案 > 当日期持续时间增加时,循环需要很多执行时间

问题描述

我有这个函数,它计算 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 秒。

标签: sqlsql-server

解决方案


推荐阅读