讓我說明情況操作與時間流逝
我有兩個表:
-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