MySQL 関数は 2 つの日付間の営業日数を計算します (休日を除く)
Excel の NETWORKDAYS() 関数は、2 つの日付間の営業日数を簡単に計算できます。MySQL にも同様の機能が必要です。休日の処理はより複雑ですが、ここでは休日を考慮しない単純化されたソリューションが必要です。
解決策:
次の式は、開始日 @S と終了日 @E の間の営業日数を効果的に計算します。
<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>
前提とメモ:
数値文字列の構築:
数値文字列は、月曜日 (WEEKDAY 0) を行と列の開始点として、開始日と終了日のテーブルとして慎重に作成されます。左上隅から右下隅までの対角線にはゼロが埋め込まれており、同じ週内の日付の間に営業日がないことを示します (たとえば、月曜日から月曜日まで)。
斜め右に移動すると、その日が週末 (非稼働日) でない場合に限り、毎日の稼働日が 0 以外の日数になります。行の終わりに達すると、カウントは同じ行の先頭に戻ります。このプロセスは、次の対角線に遭遇するまで続きます。
表現の改善:
修正後の改善された表現は次のとおりです:
<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>
この改良された式では強化された数値文字列が使用され、より正確な結果が得られます。
以上がMySQL で 2 つの日付の間の営業日 (休日を除く) を計算する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。