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
廣告