MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで開始日と終了日の間の日数をカウントする方法|DATEDIFF関数の使い方

MySQLで開始日から終了日までの日数をカウントしたい場合、DATEDIFF() 関数を使って2つの日付の差分を求めるのが基本的な方法です。この記事では、サンプルテーブルの作成から実際に日数を計算するクエリの実行まで、手順を追って詳しく解説します。

1. テーブルの作成

まず、開始日(StartDate)と終了日(EndDate)を格納するためのテーブルを作成します。

mysql> create table DemoTable730 (
    StartDate date,
    EndDate date
);
Query OK, 0 rows affected (0.45 sec)

2. サンプルデータの挿入

次に、INSERT コマンドを使ってテーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable730 values('2019-01-21','2019-07-21');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable730 values('2018-10-11','2018-12-31');
Query OK, 1 row affected (0.46 sec)
mysql> insert into DemoTable730 values('2016-01-01','2016-12-31');
Query OK, 1 row affected (0.14 sec)

3. データの確認

SELECT 文を使って、テーブル内の全レコードを表示してみましょう。

mysql> select *from DemoTable730;

このクエリを実行すると、以下のような出力が得られます。

+------------+------------+
| StartDate  | EndDate    |
+------------+------------+
| 2019-01-21 | 2019-07-21 |
| 2018-10-11 | 2018-12-31 |
| 2016-01-01 | 2016-12-31 |
+------------+------------+
3 rows in set (0.00 sec)

4. 日付範囲の日数をカウントするクエリ

それでは、開始日と終了日の間の日数をカウントするクエリを見ていきましょう。DATEDIFF() 関数は「第1引数 − 第2引数」の差を返すため、引数の順序によっては負の値になることがあります。ABS() 関数で絶対値に変換することで、常に正の整数として日数を取得できます。

mysql> select ABS(DATEDIFF(StartDate,EndDate)) AS Days from DemoTable730;

実行すると、以下のように各行の日数が出力されます。

+------+
| Days |
+------+
| 181  |
| 81   |
| 365  |
+------+
3 rows in set (0.00 sec)

まとめ

MySQLで日付範囲の日数を求めるには、DATEDIFF() 関数を使用します。開始日と終了日のどちらを先に指定しても結果を正の値にしたい場合は、ABS() 関数を組み合わせると便利です。なお、DATEDIFF() の戻り値は両端の日付の差分のみを表すため、「開始日・終了日を含む期間」として両端の日も1日ずつ加算したい場合は、結果に +1 を追加して計算するとよいでしょう。

  1. 【MySQL】日付レコードから曜日を減算し、曜日名とともに結果を表示する方法

    はじめにMySQLで保存された日付レコードから、その週の開始日(月曜日)を計算して減算し、曜日名とともに結果を表示したい場合があります。このような処理には DATE_FORMAT() 関数を使用します。SUBDATE() と WEEKDAY() を組み合わせることで、各日付が属する週の月曜日の日付を「Mon 19 Oct」のような形式で取得できます。以下、具体的な手順をサンプルコードとともに解説します。1. テーブルの作成まず、日付を文字列として格納するテーブルを作成します。mysql> create table DemoTable1820 ( AdmissionDate

  2. Pythonで開始日と終了日の範囲から合計営業日数を計算する関数の作成方法

    データ分析や業務システムの開発では、開始日と終了日の間に含まれる「営業日(平日)」の日数を求めたい場面がよくあります。Pythonのpandasライブラリを使えば、この処理を簡単に実装できます。本記事では、pd.bdate_range()を活用して、指定した期間内の合計営業日数を計算するPython関数を2つの方法で紹介します。期待する出力結果まず、2020年1月1日から2020年2月2日までの期間に対して営業日を抽出すると、以下のような結果が得られます。土曜日と日曜日は自動的に除外されている点に注目してください。Dates are: DatetimeIndex([2020-01-01, 20