MySQL のよく使う日付関数 3 - DATEDIFF()・TIMEDIFF()

ここでは MySQL のよく使う集計関数の DATEDIFF()、TIMEDIFF() についてご説明します。

MySQL の 日付関数 DATEDIFF() の使い方

MySQL の DATEDIFF() は日付や日時型の値を二つ、入力引数として受け取り、その差分の日数で返す日付関数です。

DATEDIFF(date1, date2)

差分の日数は date1 - date2 で計算されます。

入力引数を datetime で指定しても、時間の部分は無視されて、日付の部分だけを使って計算されます。


それでは、DATEDIFF() を使って、差分の日数を取得してみましょう。

SELECT 	DATEDIFF('2023-01-01 00:00:00', '2022-12-31 23:59:59') AS Case1,
		DATEDIFF('2023-01-01 12:30:00', '2023-01-05') AS Case2;

[実行結果]

MySQL のよく使う日付関数 3 - DATEDIFF()・TIMEDIFF() 1

Case1 では 2023-01-01 00:00:00 と 2022-12-31 23:59:59 の差分の日数を取得していて、1 を返しています。

実際には 1 分差しかありませんが、時間の部分は無視されて、日付のみが比較されるので 1 日差ということになります。

Case2 では、2023-01-01 12:30:00 と 2023-01-05 の差分の日数を取得していて、第一引数マイナス第二引数になるので -4 を返しています。


MySQL の 日付関数 TIMEDIFF() の使い方

MySQL の TIMEDIFF() は日時や時間型の値を二つ、入力引数として受け取り、その差分の時間を返す日付関数です。

TIMEDIFF(time1, time2)

差分の時間は time1 - time2 で計算されます。

入力引数を datetime で指定すると、日付の部分も考慮して時間の差分が計算されます。

第一引数と第二引数のデータ型は同じでなければならず、データ型が違うと NULL を返します。


それでは、TIMEDIFF() を使って、差分の時間を取得してみましょう。

SELECT 	TIMEDIFF('2023-02-01 00:00:00', '2022-12-31 23:59:59') AS Case1,
		TIMEDIFF('2023-01-01 12:30:00', '13:30:00') AS Case2,
        TIMEDIFF('2023-01-01', '2023-01-05') AS Case3,
		TIMEDIFF('10:00:00', '12:30:05') AS Case4;

[実行結果]

MySQL のよく使う日付関数 3 - DATEDIFF()・TIMEDIFF() 2

Case1 では 2023-02-01 00:00:00 と 2022-12-31 23:59:59 の差分の時間を取得していて、744:00:01 を返しています。

Case2 では、2023-01-01 12:30:00 と 13:30:00 を引数に指定していて、datetime と time 型 とデータ型が違うので NULL を返しています。

Case3 では、2023-01-01 と 2023-01-05 を引数に指定すると、NULL にはならず、日付の違いはありますが、差分は 00:00:00 になっています。

Case4 では、10:00:00 と 12:30:05 の差分の時間を取得していて、-02:30:05 を返しています。


以上、MySQL のよく使う日付関数の DATEDIFF()、TIMEDIFF() についてご説明しました。

© 2024 MySQL 入門