跳到主要内容

MICROSECONDS_DIFF

描述

MICROSECONDS_DIFF 函数用于计算两个日期时间值之间的微秒差值,结果为结束时间减去开始时间的微秒数。该函数支持处理含微秒精度的 DATETIME 类型。

语法

MICROSECONDS_DIFF(`<date_or_time_expr1>`, `<date_or_time_expr2>`)

参数

参数说明
<date_or_time_expr1>结束时间,类型为 DATETIME,具体 datetime 格式请查看 datetime 的转换
<date_or_time_expr2>开始时间,类型为 DATETIME 或 符合格式的字符串,具体 datetime 格式请查看 datetime 的转换

返回值

返回类型为 BIGINT,表示两个时间之间的微秒差值。

  • 如果 <date_or_time_expr1> 大于 <date_or_time_expr2>,返回正数
  • 如果 <date_or_time_expr1> 小于 <date_or_time_expr2>,返回负数
  • 1 秒 = 1,000,000 微秒
  • 若两个时间完全相同(包括微秒部分),返回 0。
  • 若任一参数为 NULL,返回 NULL。

举例


---计算两日期时间的微妙差
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 |
+------------------------------------------------------------------------------+

---结束时间早于开始时间,返回负数
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 |
+-------------------------------------------------------------------------------+

---输入类型为 date ,时间部分会自动设置为 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 |
+---------------------------------------------------------------+

---任意参数为 NULL,返回 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 |
+------------------------------------------------+------------------------------------------------+

--- 时间完全相同,返回 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 |
+-------------------------------------------------------------------------------+