MySQL - TIMEDIFF() 函数



MySQL 的 TIMEDIFF() 函数接受两个时间或日期时间值作为参数,计算它们之间的差值 (参数1 - 参数2),并返回结果。该函数的两个参数必须是相同类型(时间或日期时间)。

如果两个参数中的任何一个为 NULL,则该函数返回 NULL 值。

与仅从时间值中减去指定时间间隔的 SUBTIME() 函数不同,MySQL 的 TIMEDIFF() 函数用于从 datetime 或时间值中减去指定的时间间隔。

语法

以下是 MySQL TIMEDIFF() 函数的语法:

TIMEDIFF(expr1, expr2)

参数

此方法接受两个时间表达式(datetime 或 time),作为参数来查找它们之间的差值。

返回值

此函数以时间值的形式返回 expr1 和 expr2 之间的时间差。结果格式为 'hh:mm:ss'。

示例

在下面的查询中,我们使用 MySQL TIMEDIFF() 函数来计算给定时间值之间的时间差:

SELECT TIMEDIFF('20:10;00', '15:10:00') As Result;

输出

这将产生以下结果:

结果
05:00:00

示例

这里,我们将 DATETIME 值作为参数传递给函数,以计算它们之间的时间差:

SELECT TIMEDIFF('2018-05-23 18:00:00', '2018-05-23 12:00:00')
As Result;

输出

以下是输出:

结果
06:00:00

示例

在下面的示例中,我们将 CURTIME() 的结果作为参数传递给 TIMEDIFF() 函数:

SELECT TIMEDIFF('20:00:00', CURTIME()) As Result;

输出

以下是输出:

结果
08:14:43

示例

在这个例子中,我们使用以下 CREATE TABLE 查询创建了一个名为 SUBSCRIBERS 的表:

CREATE TABLE SUBSCRIBERS(
   NAME varchar(255),
   PACKAGE varchar(255),
   SubscriptionDate date,
   SubscriptionTime time
);

现在,使用 INSERT 语句将以下记录插入 SUBSCRIBERS 表中:

INSERT INTO SUBSCRIBERS VALUES
('Raja', 'Premium', Date('2020-10-21'), Time('04:00:00')),
('Roja', 'Basic', Date('2020-11-26'), Time('10:15:00')),
('Puja', 'Moderate', Date('2021-03-07'), Time('05:40:30')),
('Vanaja', 'Basic', Date('2021-02-21'), Time('02:30:00')),
('Jalaja', 'Premium', Date('2021-01-30'), Time('05:45:15'));

执行以下查询以获取上面创建的表中所有插入的记录:

Select * From SUBSCRIBERS;

以下是 SUBSCRIBERS 表:

姓名(NAME) 套餐(PACKAGE) 订阅日期(SubscriptionDate) 订阅时间(SubscriptionTime)
Raja Premium 2020-10-21 04:00:00
Roja Basic 2020-11-26 10:15:00
Puja Moderate 2021-03-07 05:40:30
Vanaja Basic 2021-02-21 02:30:00
Jalaja Premium 2021-01-30 05:45:15

现在,我们使用 MySQL TIMEDIFF() 函数计算当前时间和“SubscriptionTime”列之间的时间差:

SELECT NAME, PACKAGE, TIMEDIFF(CURTIME(), SubscriptionTime) 
As RemainingTime FROM SUBSCRIBERS;

输出

输出如下所示:

姓名(NAME) 套餐(PACKAGE) 订阅时间(SubscriptionTime)
Raja Premium 08:15:58
Roja Basic 02:00:58
Puja Moderate 06:35:28
Vanaja Basic 09:45:58
Jalaja Premium 06:30:43
广告