ホームページ >データベース >mysql チュートリアル >MySQL で 2 つの日付の間の営業日を計算するにはどうすればよいですか?

MySQL で 2 つの日付の間の営業日を計算するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-16 18:23:12285ブラウズ

How to Calculate Business Days Between Two Dates in MySQL?

MySQL で 2 つの日付の間の営業日を計算します

Excel の NETWORKDAYS() 関数は、指定した 2 つの日付の間に営業日が何日あるかを確認する便利な方法を提供します。ただし、MySQL には同様の組み込み関数がありません。

この問題を解決するために、代わりに使用できる MySQL 式を次に示します。

<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>

この式には次の計算が含まれています:

  1. 営業日の差の計算: (DATEDIFF(@E, @S) DIV 7) 開始日 @S と終了日 @E の間に何週間あるかを計算します。 7 で割ると完全な週数が得られ、それに 5 を掛けて 1 週間あたりの労働日数を計算します。
  2. 開始日と終了日の稼働日インデックスを計算します: 7 WEEKDAY(@S) および 7 WEEKDAY(@E) 開始日と終了日の稼働日インデックスを計算します (月曜日は 0、火曜日は 1 などです)。 1 を追加することは、インデックスを以下で説明する数値文字列と照合することです。
  3. 曜日カウントの取得: MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) WEEKDAY(@E) 1, 1) 指定された数値文字列から 1 文字を取得します。この文字は、指定された稼働日の組み合わせ間の稼働日の数を表します。

指定された数値文字列は、各営業日の組み合わせ (月曜日から月曜日、火曜日から火曜日など) の間の労働日数を表すように構築されます。曜日インデックスを結合し、対応する文字を取得することで、曜日数を取得します。

前提条件と制限事項:

  • この関数は、@E が @S より早くないことを前提としています。
  • 祝日は無視されるため、計算された営業日数は休日を含むシナリオでは正確ではない可能性があります。
  • 数値文字列は式にハードコードされており、稼働日の規則が異なる場合 (例: 日曜日が稼働日とみなされる場合)、更新が必要になる場合があります。

以上がMySQL で 2 つの日付の間の営業日を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。