让我说明情况操作与时间流逝
我有两个表:
-One是存储设备故障,用自己的开始日期和结束日期。
- 其他来存储休息时间,每个休息时间都有一个开始日期和结束日期。
例如,故障从9:10开始并在9:16结束。休息时间从9点14分开始,到9点18分结束,故障时间为4分钟,因故障而中断2分钟的故障不算。我需要得到“2分钟”的价值包括它在一份报告中
来计算的话,我使用的是标量值函数:
DECLARE @Time int;
SET @Time = 0;
IF (@BreakStartDate > @FaultStartDate) AND (@BreakEndDate < @FaultEndDate)
SET @Time = DATEDIFF(SECOND, @BreakStartDate, @BreakEndDate);
ELSE IF (@FaultStartDate > @BreakStartDate) AND (@FaultEndDate < @BreakEndDate)
SET @Time = DATEDIFF(SECOND, @FaultStartDate, @FaultEndDate);
ELSE IF (@FaultStartDate < @BreakStartDate) AND ((@FaultEndDate > @BreakStartDate) AND (@FaultEndDate < @BreakEndDate))
SET @Time = DATEDIFF(SECOND, @BreakStartDate, @FaultEndDate);
ELSE IF (@FaultEndDate > @BreakEndDate) AND ((@FaultStartDate > @BreakStartDate) AND (@FaultStartDate < @BreakEndDate))
SET @Time = DATEDIFF(SECOND, @FaultStartDate, @BreakEndDate);
RETURN @Time
我需要验证所有的场景,如果故障开始第一并完成休息等...
我的问题是,存在一个自动做到这一点的功能?
还是更优雅的解决方案?
哦,这种方法是如此的优雅。只有你犯了一个错误:“SET @biggestStart = CASE WHEN @FaultStartDate> @BreakStartDate THEN @FaultStartDate ELSE @BreakEndDate END;”错误是在最后一个@BreakEndDate,它必须是@BreakStartDate – 2010-11-24 23:33:07