跳到主要内容

MILLISECONDS_DIFF

描述

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

语法

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

参数

参数说明
<date_or_time_expr1>结束时间,支持输入 datetime 类型,具体 datetime 格式请查看 datetime 的转换
<date_or_time_expr2>结束时间,支持输入 datetime 类型,具体 datetime 格式请查看 datetime 的转换

返回值

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

  • <date_or_time_expr1> 晚于 <date_or_time_expr2>,返回正数。
  • <date_or_time_expr1> 早于 <date_or_time_expr2>,返回负数。
  • 若两个时间完全相同(包括毫秒部分),返回 0。
  • 若输入为 DATE 类型(仅包含年月日),默认其时间部分为 00:00:00.000。
  • 若输入的时间包含微秒部分(如 '2023-01-01 00:00:00.123456'),会自动截断为毫秒精度后计算(即 123 毫秒)。
  • 若任一参数为 NULL,返回 NULL。

举例

---计算毫秒差
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 |
+-------------------------------------------------------------------------------+

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

--- 输入含微秒的时间(自动截断为毫秒)
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 |
+-------------------------------------------------------------------------------+

--- 输入为 DATE 类型(默认时间 00:00:00.000)
SELECT MILLISECONDS_DIFF('2023-10-02', '2023-10-01') ;
+-----------------------------------------------+
| MILLISECONDS_DIFF('2023-10-02', '2023-10-01') |
+-----------------------------------------------+
| 86400000 |
+-----------------------------------------------+

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


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