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

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

Mary-Kate Olsen
リリース: 2025-01-16 18:13:14
オリジナル
300 人が閲覧しました

How Can I Calculate Business Days Between Two Dates in MySQL Without Considering Holidays?

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 関数を巧みに組み合わせています:

  1. DATEDIFF(@E, @S): 2 つの日付間の合計日数を計算します。

  2. DIV 7: 合計日数を 7 で割って、完全な週数を求めます。

  3. *` 5`:** 各週の 5 営業日を考慮して、週数に 5 を掛けます。

  4. WEEKDAY(@S) および WEEKDAY(@E): 開始日と終了日の両方の曜日 (日曜日は 0、月曜日は 1 など) を決定します。

  5. *`7 WEEKDAY(@S) WEEKDAY(@E) 1`:** この計算により、検索文字列へのインデックスが生成されます。

  6. MID('0123444401233334012222340111123400012345001234550', ..., 1): MID 関数は、計算されたインデックスを使用して、巧妙に構築された文字列から 1 桁を抽出します。この数字は、週全体の計算 (最初と最後の週の一部を考慮) では取得されない残りの営業日を表します。

この方法は、複雑な休日の処理を行わずに、週末を除いた MySQL の営業日を迅速かつ効率的に概算する方法を提供します。 休日を含むより包括的なソリューションには、休日テーブルを含むより複雑なアプローチが必要です。

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

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