MICROSECONDS_DIFF
説明
MICROSECONDS_DIFF関数は、2つのdatetime値間のマイクロ秒単位の差を計算します。結果は、終了時刻と開始時刻の間の間隔におけるマイクロ秒数です。この関数は、マイクロ秒精度でのDATETIME型の処理をサポートします。
構文
MICROSECONDS_DIFF(`<date_or_time_expr1>`, `<date_or_time_expr2>`)
パラメータ
| Parameter | デスクリプション |
|---|---|
<date_or_time_expr1> | 終了時刻。DATETIME型です。datetime形式については、datetime conversionを参照してください。 |
<date_or_time_expr2> | 開始時刻。DATETIME型または有効なdatetime文字列です。 |
Return Value
BIGINT型を返し、2つの時刻間のマイクロ秒単位の差を表します。
<date_or_time_expr1>が<date_or_time_expr2>より大きい場合、正の数を返します。<date_or_time_expr1>が<date_or_time_expr2>より小さい場合、負の数を返します。- 2つの時刻が同一の場合(マイクロ秒部分も含む)、0を返します。
- いずれかのパラメータがNULLの場合、NULLを返します。
Examples
-- Calculate the microsecond difference between two datetime values
SELECT MICROSECONDS_DIFF('2020-12-25 21:00:00.623000', '2020-12-25 21:00:00.123000');
+------------------------------------------------------------------------------+
| MICROSECONDS_DIFF('2020-12-25 21:00:00.623000','2020-12-25 21:00:00.123000') |
+------------------------------------------------------------------------------+
| 500000 |
+------------------------------------------------------------------------------+
--If the end time is earlier than the start time, a negative number is returned.
SELECT MICROSECONDS_DIFF('2023-10-01 12:00:00.500000', '2023-10-01 12:00:00.800000');
+-------------------------------------------------------------------------------+
| MICROSECONDS_DIFF('2023-10-01 12:00:00.500000', '2023-10-01 12:00:00.800000') |
+-------------------------------------------------------------------------------+
| -300000 |
+-------------------------------------------------------------------------------+
-- Input type is date, time part defaults to 00:00:00.000000
SELECT MICROSECONDS_DIFF('2023-10-01 12:00:00.500000', '2023-10-01');
+---------------------------------------------------------------+
| MICROSECONDS_DIFF('2023-10-01 12:00:00.500000', '2023-10-01') |
+---------------------------------------------------------------+
| 43200500000 |
+---------------------------------------------------------------+
-- Any parameter is NULL, returns NULL
SELECT MICROSECONDS_DIFF('2023-01-01 00:00:00', NULL), MICROSECONDS_DIFF(NULL, '2023-01-01 00:00:00');
+------------------------------------------------+------------------------------------------------+
| MICROSECONDS_DIFF('2023-01-01 00:00:00', NULL) | MICROSECONDS_DIFF(NULL, '2023-01-01 00:00:00') |
+------------------------------------------------+------------------------------------------------+
| NULL | NULL |
+------------------------------------------------+------------------------------------------------+
--- datetime is same,return 0
SELECT MICROSECONDS_DIFF('2025-08-11 15:30:00.123456', '2025-08-11 15:30:00.123456');
+-------------------------------------------------------------------------------+
| MICROSECONDS_DIFF('2025-08-11 15:30:00.123456', '2025-08-11 15:30:00.123456') |
+-------------------------------------------------------------------------------+
| 0 |
+-------------------------------------------------------------------------------+