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 |
+-------------------------------------------------------------------------------+