開始時刻と終了時刻を指定して、年間の週数を計算します(Oracle関数)

関数の作成または置換get_weekly_times(i_ksrq IN DATE、i_jsrq IN DATE)
  戻り番号は決定的です

  / **
  *開始日と終了日を指定して、週数を取得します(クロス   イヤーをサポート)
  *毎週:月曜日から日曜日
  *
*関数に決定論を追加します。SQLの実行中に、同じ入力パラメーターに対して、関数は次の値を返します。同じ値、dbは自動的にそれをキャッシュします。
  * 
  * /

  v_dsdez_zrDATE;-最後から2番目の週の
  日曜日v_zsNUMBER;-番号

  v_ksrq DATE DEFAULT trunc(i_ksrq);-時間、分、秒を
  削除しますv_jsrq DATE DEFAULT trunc(i_jsrq);-時間、分、秒を   削除します
BEGIN
v_dsdez_zr:= trunc(v_jsrq、 'IW')-1;
  SELECT COUNT( *)
    INTO v_zs
    (SELECT v_ksrq + rn last_zr
            FROM(SELECT LEVEL-1 rn
                    FROM dual
                  CONNECT BY LEVEL <= v_dsdez_zr-v_ksrq + 1)
           WHERE to_char(v_ksrq + rn、 'd')= '1'-日付間隔日曜日(開始           日— —最後から2番目の週の日曜日
          UNION
SELECT trunc(v_jsrq、 'IW')+ 6 last_zr
            FROM dual--終了日が配置されている曜日
          );
  dbms_output.put_line( '開始日:' | | v_ksrq || '、終了日:' || v_jsrq ||
                       '、週番号を返します: '|| v_zs);
  RETURN v_zs;
END get_weekly_times;
 

おすすめ

転載: blog.csdn.net/qq_36336332/article/details/103417587