MySQL での営業日 (週末を除く) の効率的な計算
多くのアプリケーションでは、2 つの日付の間の営業日数を計算する必要があります。スプレッドシート ソフトウェアでは、このための組み込み関数 (NETWORKDAYS など) が提供されることがよくありますが、MySQL には直接同等の関数がありません。 この記事では、週末の除外に焦点を当てて、これを実現するための簡潔な MySQL 式を紹介します。 この解決策は休日を考慮しないことに注意してください。
MySQL 式
日付 @S
(開始日) と @E
(終了日) の間の営業日を決定するには、次を使用します。
<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>
仕組み:
この式は、いくつかの MySQL 関数を巧みに組み合わせています:
DATEDIFF(@E, @S)
: 2 つの日付間の合計日数を計算します。
DIV 7
: 合計日数を 7 で割って、完全な週数を求めます。
*` 5`:** 各週の 5 営業日を考慮して、週数に 5 を掛けます。
WEEKDAY(@S)
および WEEKDAY(@E)
: 開始日と終了日の両方の曜日 (日曜日は 0、月曜日は 1 など) を決定します。
*`7 WEEKDAY(@S) WEEKDAY(@E) 1`:** この計算により、検索文字列へのインデックスが生成されます。
MID('0123444401233334012222340111123400012345001234550', ..., 1)
: MID
関数は、計算されたインデックスを使用して、巧妙に構築された文字列から 1 桁を抽出します。この数字は、週全体の計算 (最初と最後の週の一部を考慮) では取得されない残りの営業日を表します。
この方法は、複雑な休日の処理を行わずに、週末を除いた MySQL の営業日を迅速かつ効率的に概算する方法を提供します。 休日を含むより包括的なソリューションには、休日テーブルを含むより複雑なアプローチが必要です。
以上がMySQL で休日を考慮せずに 2 つの日付の間の営業日を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。