跳到主要内容

MINUTES_DIFF

描述

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

语法

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

参数

参数说明
<date_or_time_expr1>结束时间,类型可以是 DATE、DATETIME ,具体 datetime/date 请查看 datetime 的转换, date 的转换
<date_or_time_expr1>开始时间,类型可以是 DATE、DATETIME ,具体 datetime/date 请查看 datetime 的转换, date 的转换

返回值

返回 INT 类型的整数,表示 <date_or_time_expr1><date_or_time_expr2> 之间的分钟差值(1 小时 = 60 分钟)。

  • <date_or_time_expr1>晚于 <date_or_time_expr2>,返回正数。
  • <date_or_time_expr1> 早于 <date_or_time_expr2>,返回负数。
  • 计算时会计算真实差距,不会忽略秒,微秒。
  • 若输入为 DATE 类型(仅包含年月日),默认其时间部分为 00:00:00。
  • 若输入的日期时间包含 scale ,秒或毫秒部分不为零,计算时不会忽略。
  • 若任一参数为 NULL,返回 NULL。

举例

--- 结束时间大于开始时间的分钟差
SELECT MINUTES_DIFF('2020-12-25 22:00:00', '2020-12-25 21:00:00') AS result;
+--------+
| result |
+--------+
| 60 |
+--------+

--- 包含 scale ,计算时不会忽略
SELECT MINUTES_DIFF('2020-12-25 21:00:00.999', '2020-12-25 22:00:00.923');
+--------------------------------------------------------------------+
| MINUTES_DIFF('2020-12-25 21:00:00.999', '2020-12-25 22:00:00.923') |
+--------------------------------------------------------------------+
| -59 |
+--------------------------------------------------------------------+

--- 结束时间早于开始时间,返回负数
SELECT MINUTES_DIFF('2023-07-13 21:50:00', '2023-07-13 22:00:00') AS result;
+--------+
| result |
+--------+
| -10 |
+--------+

--- 输入为 DATE 类型(默认时间 00:00:00)
SELECT MINUTES_DIFF('2023-07-14', '2023-07-13') AS result;
+--------+
| result |
+--------+
| 1440 |
+--------+

--- 两个时间的秒数不相同,也会把秒数计算入内
SELECT MINUTES_DIFF('2023-07-13 22:30:59', '2023-07-13 22:31:01') AS result;
+--------+
| result |
+--------+
| 0 |
+--------+

--- 任一参数为 NULL,返回 NULL
SELECT MINUTES_DIFF(NULL, '2023-07-13 22:00:00'), MINUTES_DIFF('2023-07-13 22:00:00', NULL) AS result;
+-------------------------------------------+--------+
| MINUTES_DIFF(NULL, '2023-07-13 22:00:00') | result |
+-------------------------------------------+--------+
| NULL | NULL |
+-------------------------------------------+--------+