MySQLのDATEDIFF関数で2つの日付間の日数(営業日)を求める方法
MySQLのDATEDIFF関数とは
MySQLでは、DATEDIFF(expr1, expr2)関数を使うことで、指定した2つの日付の差を日数として簡単に求めることができます。この関数は「expr1 − expr2」の日数を返すため、期間の計算に非常に便利です。
基本構文
DATEDIFF(日付1, 日付2)
引数にはDATE型または日付として解釈できる文字列を指定します。
使用例:2つの日付間の日数を計算する
例えば、「2017-05-27」と「2017-05-23」の間の日数を求めたい場合は、以下のようなクエリを実行します。
mysql> Select DATEDIFF('2017-05-27','2017-05-23') AS 'Total Business Days';
+----------------------+
| Total Business Days |
+----------------------+
| 4 |
+----------------------+
1 row in set (0.00 sec)実行結果から、2つの日付の間には4日の差があることが確認できます。AS句を使って別名を付けることで、結果の列名も見やすくなります。
注意点:土日や祝日は自動的に除外されない
DATEDIFF関数はあくまで暦上の日数の差を計算する関数であるため、土曜日・日曜日や祝日は考慮されません。厳密な意味での「営業日(稼働日)」を求めたい場合は、WEEKDAY()関数などと組み合わせて週末を除外する追加のロジックが必要になります。
例えば、週末(土日)を除いたおおよその営業日数は、次のようにして算出できます。
SELECT (DATEDIFF('2017-05-27','2017-05-23') + 1)
- ((WEEK('2017-05-27', 1) - WEEK('2017-05-23', 1)) * 2) AS 'Business Days';また、日本の祝日などを正確に除外したい場合は、祝日情報を管理するテーブルを作成し、それと照合しながら集計する方法が一般的です。
まとめ
手軽に日数の差を知りたいだけであればDATEDIFF関数だけで十分ですが、ビジネスシーンで実際の稼働日数を扱う場合は、週末や祝日の除外処理を組み合わせることをおすすめします。
-
C++で2つの日付間の日数を計算する方法【効率的なアルゴリズム解説】
この記事では、日付を表す3つの整数(DD-MM-YYYY形式)からなる2つの配列 date1[] と date2[] が与えられたとき、その2つの日付の間の日数を求める方法を解説します。 問題を理解するための例 入力 date1[] = {13, 3, 2021}, date2[] = {24, 5, 2023} 出力 802 説明 2つの日付の差は「2年」と「2か月(3月〜5月)」、そして「11日」です。これを日数に換算すると以下のようになります。 2 × 365 + (30 + 31) + 11 = 802 解法アプローチ 単純なアプローチ(ループによる方法) 最もシンプルな解決策は、開始
-
PHPで2つの日付間の日数を求める方法|date_diff関数の使い方を解説
PHPでは、date_diff関数を使うことで、指定した2つの日付の差(日数)を簡単に求めることができます。この関数は組み込み関数であり、日数の差が正常に計算できた場合にはDateIntervalオブジェクトを返し、計算できなかった場合にはfalseを返します。 サンプルコード <?php $date_1 = date_create('23-11-2019'); $date_2 = date_create('22-1-2020'); $day_diff = date_diff($date_1, $date_2); echo $day_diff->f