ホームページ > データベース > mysql チュートリアル > 組み込み関数を使用せずに MySQL で 2 つの日付の間の営業日を計算する方法は?

組み込み関数を使用せずに MySQL で 2 つの日付の間の営業日を計算する方法は?

Mary-Kate Olsen
リリース: 2025-01-16 17:56:10
オリジナル
209 人が閲覧しました

How to Calculate Working Days Between Two Dates in MySQL Without a Built-in Function?

MySQL で 2 つの日付間の営業日を計算する方法

Excel などの多くの一般的なスプレッドシート プログラムには、2 つの日付の間の営業日数を計算する NETWORKDAYS() 関数が用意されています。ただし、MySQL には同様の組み込み関数がありません。

解決策: 数学的表現

MySQL で 2 つの日付間の営業日数を計算するには、次の式を使用できます:

<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>
ログイン後にコピー

説明:

  • DATEDIFF(@E, @S): 終了日 (@E) と開始日 (@S) の間の日数の差を計算します。
  • DIV 7: 日付間の週数を取得するには、差を 7 で割ります。
  • 5: 週数に 5 を掛けて、営業日数を取得します。
  • MID(): 開始日と終了日に基づいて、文字列から関連する数値のサブセットを抽出します。式で使用される特定の文字列は、さまざまな開始日と終了日の組み合わせの間の営業日数から構築されます。

前提条件と制限事項:

  • 終了日 (@E) を開始日 (@S) より前にすることはできません。
  • この関数は休日を無視します。
  • この式は月曜日が週の最初の日であると想定しています。

例:

'2023-03-06' (@S) から '2023-03-10' (@E) までの営業日数を計算するには、次のクエリを使用できます:

<code class="language-sql">SELECT 5 * (DATEDIFF('2023-03-10', '2023-03-06') DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY('2023-03-06') + WEEKDAY('2023-03-10') + 1, 1) AS num_working_days;</code>
ログイン後にコピー

このクエリは、2 つの日付の間の営業日数 (5) を返します。

以上が組み込み関数を使用せずに MySQL で 2 つの日付の間の営業日を計算する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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