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