MariaDB TIMESTAMPDIFF() 函数的基础用法与实例

MariaDB TIMESTAMPDIFF() 函数用来计算两个日期时间值之间的时间间隔。

发布于

MariaDB TIMESTAMPDIFF() 函数用来计算两个日期时间值之间的时间间隔。它通常用于计算两个日期或时间之间的天数、小时数、分钟数等,对于需要统计或计算时间段长度的场景非常有用。

语法

MairaDB TIMESTAMPDIFF() 函数的语法如下:

TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)
  • unit:指定要计算的时间单位,可以是以下值:MICROSECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER 或者 YEAR。
  • datetime_expr1:较小的日期时间值表达式。
  • datetime_expr2:较大的日期时间值表达式。

函数返回 datetime_expr2 减去 datetime_expr1 之间的时间间隔,返回值的类型为有符号整数。

实例

计算天数差

本示例展示了如何计算两个日期之间相差的天数:

SELECT TIMESTAMPDIFF(DAY, '2023-03-01', '2023-03-15');

以下是该语句的输出:

+------------------------------------------------+
| TIMESTAMPDIFF(DAY, '2023-03-01', '2023-03-15') |
+------------------------------------------------+
|                                             14 |
+------------------------------------------------+

该示例计算了日期 ‘2023-03-01’ 与 ‘2023-03-15’ 之间相差的天数为 14 天。

计算月份差

本示例展示了如何计算两个日期之间相差的月数:

SELECT TIMESTAMPDIFF(MONTH, '2022-05-15', '2023-03-15');

以下是该语句的输出:

+--------------------------------------------------+
| TIMESTAMPDIFF(MONTH, '2022-05-15', '2023-03-15') |
+--------------------------------------------------+
|                                               10 |
+--------------------------------------------------+

该示例计算了日期 ‘2022-05-15’ 与 ‘2023-03-15’ 之间相差的月数为 10 个月。

计算小时差

本示例展示了如何计算两个时间之间相差的小时数:

SELECT TIMESTAMPDIFF(HOUR, '2023-03-15 10:15:00', '2023-03-15 14:30:00');

以下是该语句的输出:

+-------------------------------------------------------------------+
| TIMESTAMPDIFF(HOUR, '2023-03-15 10:15:00', '2023-03-15 14:30:00') |
+-------------------------------------------------------------------+
|                                                                 4 |
+-------------------------------------------------------------------+

该示例计算了时间 ‘2023-03-15 10:15:00’ 与 ‘2023-03-15 14:30:00’ 之间相差的小时数为 4 小时。

计算分钟差

本示例展示了如何计算两个时间之间相差的分钟数:

SELECT TIMESTAMPDIFF(MINUTE, '2023-03-15 10:15:00', '2023-03-15 11:05:00');

以下是该语句的输出:

+---------------------------------------------------------------------+
| TIMESTAMPDIFF(MINUTE, '2023-03-15 10:15:00', '2023-03-15 11:05:00') |
+---------------------------------------------------------------------+
|                                                                  50 |
+---------------------------------------------------------------------+

该示例计算了时间 ‘2023-03-15 10:15:00’ 与 ‘2023-03-15 11:05:00’ 之间相差的分钟数为 50 分钟。

计算两个日期时间值之间的秒数

DROP TABLE IF EXISTS orders;
CREATE TABLE orders (
  id INT AUTO_INCREMENT PRIMARY KEY,
  order_date DATETIME,
  shipped_date DATETIME
);

INSERT INTO orders (order_date, shipped_date) VALUES
  ('2023-02-15 09:23:11', '2023-02-18 14:56:32'),
  ('2023-03-01 14:56:32', '2023-03-05 18:09:45'),
  ('2023-03-15 18:09:45', '2023-03-18 09:45:23');

SELECT id, TIMESTAMPDIFF(SECOND, order_date, shipped_date) AS seconds_diff
FROM orders;

以下是该语句的输出:

+----+--------------+
| id | seconds_diff |
+----+--------------+
|  1 |       279201 |
|  2 |       357193 |
|  3 |       228938 |
+----+--------------+

该示例计算了 orders 表中每个订单的下单时间与发货时间之间相差的秒数。

相关函数

以下是几个与 MairaDB TIMESTAMPDIFF() 相关的几个函数:

  • MariaDB TIMESTAMPADD() 函数用来为日期时间值增加指定的时间间隔。
  • MariaDB DATEDIFF() 函数用来计算两个日期之间相差的天数。
  • MariaDB TIMEDIFF() 函数用来计算两个时间之间的时间间隔。
  • MariaDB PERIOD_DIFF() 函数用来计算两个日期之间的月份差,返回以年和月的形式表示。
  • MariaDB TIME_TO_SEC() 函数用来将时间值转换为秒数。

结论

MariaDB TIMESTAMPDIFF() 函数是一个非常实用的日期时间处理函数,可以方便地计算两个日期时间之间的时间间隔。通过指定不同的时间单位,可以获取天数、月数、小时数、分钟数、秒数等多种时间间隔。结合其他相关的日期时间函数,可以更好地满足数据处理中对时间维度的各种需求。