Oracle SQL での営業日の計算 (関数またはプロシージャなし)
次の式を使用して Oracle SQL の 2 つの日付の間の営業日を計算します。
((to_char(CompleteDate,'J') - to_char(InstallDate,'J')) 1) - (((to_char(CompleteDate,'WW') (52 ((to_char(CompleteDate,'YYYY') - to_char(InstallDate,'YYYY')))) ) - to_char(InstallDate,'WW'))2)
はほぼ正確な結果を生成しますが、場合によっては 2 日以内の誤差が生じる場合があります。この不一致は、次の要素を無視していることが原因です:
これらの問題に対処するには、より正確な式が必要ですは:
(TRUNC(CompleteDate) - TRUNC(InstallDate) ) 1 -
((((TRUNC(CompleteDate,'D'))-(TRUNC(InstallDate,'D')))/ 7)*2) -
(次の場合) TO_CHAR(InstallDate,'DY','nls_date_lang=english')='SUN' THEN 1 ELSE 0 END) -
(CASE WHEN TO_CHAR(CompleteDate,'DY','nls_date_lang=english')='SAT' THEN 1 ELSE 0 END)
ここで、TRUNC() は日付から時刻コンポーネントを抽出し、TO_CHAR() で平日を抽出します。計算には、切り捨てられた日付の間の日数が組み込まれ、週末が減算され、週末の開始日または終了日が調整されるようになりました。
これらの改善を組み込むことにより、数式は Excel の NETWORKDAYS 関数と一致して、営業日を正確に計算するようになりました。 .
以上が関数やプロシージャを使用せずにOracle SQLで2つの日付の間の営業日を正確に計算する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。