MySQL で週末を除いた日付の違いを計算するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-01 05:27:27
オリジナル
625 人が閲覧しました

How to Calculate Date Differences Excluding Weekends in MySQL?

日付の差の計算で週末を除く: MySQL ソリューション

MySQL ユーザーは、週末を除いた 2 つの日付の差を正確に計算するために、多くの場合、次のことを求めます。ガイダンス。標準の DATEDIFF 関数は、基本的な日付の違いには便利ですが、週末を省略する必要がある場合には不十分です。

この問題に対処するには、WEEKDAY 関数を使用してカスタム関数を作成できます。

CREATE FUNCTION TOTAL_WEEKDAYS(date1 DATE, date2 DATE)
RETURNS INT

RETURN ABS(DATEDIFF(date2, date1)) + 1
     - ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY),
                    ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) / 7 * 2
     - (DAYOFWEEK(IF(date1 < date2, date1, date2)) = 1)
     - (DAYOFWEEK(IF(date1 > date2, date1, date2)) = 7);
ログイン後にコピー

この関数はいくつかの MySQL 関数を使用します。

  • ABS: 数値の絶対値を返します。
  • DATEDIFF: 数値の差を決定します。 2 つの日付。
  • ADDDATE: 指定された日数を日付に加算します。
  • DAYOFWEEK: 指定された日付の曜日を取得します。1 は日曜日を表し、7 は土曜日を表します。

これらの関数を組み合わせることで、TOTAL_WEEKDAYS 関数は 2 つの入力日付間の絶対差を計算し、範囲内の土曜日と日曜日の数を減算し、範囲の開始日と終了日を調整します。 .

使用例:

週末を除いた 2 つの日付の差を計算するには:

SELECT TOTAL_WEEKDAYS('2013-08-03', '2013-08-21') AS weekdays1,
       TOTAL_WEEKDAYS('2013-08-21', '2013-08-03') AS weekdays2;
ログイン後にコピー

結果:

| WEEKDAYS1 | WEEKDAYS2 |
-------------------------
|        13 |        13 |
ログイン後にコピー

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

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