2011-07-01 14 views
0

日付の範囲からすべての週末を除外するためにto_number(to_char())関数を使用できますか?週末除外のoracle pl/sql:datepart()関数

たとえば、私のテーブルには、開始時刻と終了時刻('06/06/2011 10:00:00 am 'のような)の2つの日付列があり、土曜日と日曜日を除く。

答えて

0

あなたが正しく理解している場合は、2つの日付の間の差異を計算したいが、結果の範囲内の各週末の2日は除外したい。あれは正しいですか?

これはあなたが以下のコードは、以下の仮定で動作するはず欲しいものである場合:

  • 私は開始と終了が週末にはならないだろうと想定しています。
  • 私はその終了が開始前であることを確認していません。

基本的には、週末にいくつの週末があるかを調べるだけです。だから明らかに7日間に1回の週末があります。そして、範囲が週末を包むかどうかをチェックし、もしそうならばもう1つ追加しなければなりません。

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; 
関連する問題