MILLISECONDS_DIFF
デスクリプション
MILLISECONDS_DIFF関数は、2つのdatetime値間のミリ秒単位の差を計算します。結果は、終了時刻から開始時刻を減算して得られるミリ秒数です。この関数はDATETIME型の処理をサポートしています。
Syntax
MILLISECONDS_DIFF(`<date_or_time_expr1>`, `<date_or_time_expr2>`)
パラメータ
| Parameter | デスクリプション |
|---|---|
<date_or_time_expr1> | 終了時刻。DATETIME型。具体的なdatetimeフォーマットについては、datetime conversionとdate conversionを参照してください。 |
<date_or_time_expr2> | 開始時刻。DATETIME型。具体的なdatetimeフォーマットについては、datetime conversionとdate conversionを参照してください。 |
Return Value
INT型の値を返します。2つの時刻の差をミリ秒単位で表します。
<date_or_time_expr1>が<date_or_time_expr2>より後の場合、結果は正の値になります。<date_or_time_expr1>が<date_or_time_expr2>より前の場合、結果は負の値になります。- 2つの時刻が同じ場合(ミリ秒部分を含む)、結果は0になります。
- 入力が
DATE型の場合(年、月、日のみを含む)、時刻部分はデフォルトで00:00:00.000に設定されます。 - 入力時刻にマイクロ秒が含まれる場合(例:
'2023-01-01 00:00:00.123456')、計算時に自動的にミリ秒精度に切り捨てられます(例:123 milliseconds)。 - いずれかのパラメータが
NULLの場合、関数はNULLを返します。
Examples
-- Calculate millisecond difference
SELECT MILLISECONDS_DIFF('2020-12-25 21:00:00.623000', '2020-12-25 21:00:00.123000');
+-------------------------------------------------------------------------------+
| MILLISECONDS_DIFF('2020-12-25 21:00:00.623000', '2020-12-25 21:00:00.123000') |
+-------------------------------------------------------------------------------+
| 500 |
+-------------------------------------------------------------------------------+
-- End time is earlier than start time, returns negative value
SELECT MILLISECONDS_DIFF('2023-10-01 12:00:00.500', '2023-10-01 12:00:00.800');
+-------------------------------------------------------------------------+
| MILLISECONDS_DIFF('2023-10-01 12:00:00.500', '2023-10-01 12:00:00.800') |
+-------------------------------------------------------------------------+
| -300 |
+-------------------------------------------------------------------------+
-- Input includes microseconds (automatically truncated to milliseconds)
SELECT MILLISECONDS_DIFF('2023-01-01 00:00:00.123456', '2023-01-01 00:00:00.000123');
+-------------------------------------------------------------------------------+
| MILLISECONDS_DIFF('2023-01-01 00:00:00.123456', '2023-01-01 00:00:00.000123') |
+-------------------------------------------------------------------------------+
| 123 |
+-------------------------------------------------------------------------------+
-- Input is of DATE type (default time is 00:00:00.000)
SELECT MILLISECONDS_DIFF('2023-10-02', '2023-10-01');
+-----------------------------------------------+
| MILLISECONDS_DIFF('2023-10-02', '2023-10-01') |
+-----------------------------------------------+
| 86400000 |
+-----------------------------------------------+
-- Any parameter is NULL, returns NULL
SELECT MILLISECONDS_DIFF('2023-01-01 00:00:00', NULL), MILLISECONDS_DIFF(NULL, '2023-01-01 00:00:00');
+------------------------------------------------+------------------------------------------------+
| milliseconds_diff('2023-01-01 00:00:00', NULL) | milliseconds_diff(NULL, '2023-01-01 00:00:00') |
+------------------------------------------------+------------------------------------------------+
| NULL | NULL |
+------------------------------------------------+------------------------------------------------+
-- Times are identical, returns 0
SELECT MILLISECONDS_DIFF('2025-08-11 15:30:00.123', '2025-08-11 15:30:00.123');
+-------------------------------------------------------------------------+
| MILLISECONDS_DIFF('2025-08-11 15:30:00.123', '2025-08-11 15:30:00.123') |
+-------------------------------------------------------------------------+
| 0 |
+-------------------------------------------------------------------------+