ホームページ > データベース > mysql チュートリアル > 関数やプロシージャを使用せずにOracle SQLで2つの日付の間の営業日を正確に計算する方法は?

関数やプロシージャを使用せずにOracle SQLで2つの日付の間の営業日を正確に計算する方法は?

Mary-Kate Olsen
リリース: 2025-01-04 03:53:39
オリジナル
214 人が閲覧しました

How to Accurately Calculate Business Days Between Two Dates in Oracle SQL Without Using Functions or Procedures?

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 日以内の誤差が生じる場合があります。この不一致は、次の要素を無視していることが原因です:

  • この式ではすべての月が 30 日であると想定されていますが、これは正しくありません。
  • 週末 (土曜日と日曜日) は除外されます。

これらの問題に対処するには、より正確な式が必要ですは:

(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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート