2011-07-01 75 views

回答

0

如果我理解你的權利,你想計算兩個日期之間的差異,但排除結果範圍內每個週末的2天。那是對的嗎?

如果這是你想要的下面的代碼應與以下假設的工作是什麼:

  • 我假設開始和結束不會是在週末。
  • 我沒有驗證那個結局是在開始之前。

基本上,它只是一個問題,計算出多少個週末在日期範圍內。很明顯,每7天有一個週末。然後我們只需要檢查一下週末的範圍,如果是的話再添加一個。

FUNCION dateDiff(dt_start DATE, dt_end DATE) RETURN NUMBER 
IS 
    raw_diff NUMBER; 
    weekends NUMBER; 
BEGIN 
    raw_diff := dt_end - dt_start; 
    weekends := TRUNC(raw_diff/7); 
    IF((dt_start - TRUNC(dt_start, 'DAY')) 
     > (dt_end - TRUNC(dt_end , 'DAY'))) 
    THEN 
     weekends := weekends + 1; 
    END IF; 
    RETURN raw_diff - (weekends * 2); 
END;