介紹 MySQL/MariaDB 資料庫中各種用於計算時間相加、相減的函數。
推算未來時間(時間相加)
ADDTIME
函數可以用來計算兩個時間的相加,語法如下:
ADDTIME(時間1, 時間2)
其中 時間1
的資料型態可以是 time
或是 datetime
,而 時間2
的資料型態則必須為 time
,以下是簡單的範例:
-- 時間相加 SELECT ADDTIME('14:20:30', '02:10:20');
+---------------------------------+ | ADDTIME('14:20:30', '02:10:20') | +---------------------------------+ | 16:30:50 | +---------------------------------+
-- 時間相加 SELECT ADDTIME('2019-11-05 14:20:30', '02:10:20');
+--------------------------------------------+ | ADDTIME('2019-11-05 14:20:30', '02:10:20') | +--------------------------------------------+ | 2019-11-05 16:30:50 | +--------------------------------------------+
TIMESTAMPADD
可用來添加一段時間間隔至既有的時間戳記(timestamp)中,其語法為:
TIMESTAMPADD(時間單位, 添加值, 原時間戳記)
其中可用的時間單位
有 MICROSECOND
、SECOND
、MINUTE
、HOUR
、DAY
、WEEK
、MONTH
、QUARTER
、YEAR
,以下是簡單的範例:
-- 加上 3 小時 SELECT TIMESTAMPADD(HOUR, 3, '2019-11-05 14:20:30');
+----------------------------------------------+ | TIMESTAMPADD(HOUR, 3, '2019-11-05 14:20:30') | +----------------------------------------------+ | 2019-11-05 17:20:30 | +----------------------------------------------+
推算過去時間(時間相減)
SUBTIME
函數可以用來計算兩個時間的相減,語法跟 ADDTIME
類似:
SUBTIME(時間1, 時間2)
它會計算 時間1
減掉 時間2
的值,其中 時間1
的資料型態可以是 time
或是 datetime
,而 時間2
的資料型態則必須為 time
,以下是簡單的範例:
-- 時間相減 SELECT SUBTIME('14:20:30', '02:10:20');
+---------------------------------+ | SUBTIME('14:20:30', '02:10:20') | +---------------------------------+ | 12:10:10 | +---------------------------------+
-- 時間相減 SELECT SUBTIME('2019-11-05 14:20:30', '02:10:20');
+--------------------------------------------+ | SUBTIME('2019-11-05 14:20:30', '02:10:20') | +--------------------------------------------+ | 2019-11-05 12:10:10 | +--------------------------------------------+
計算間隔時間(時間相減)
TIMEDIFF
可用來計算兩個時間的間隔時間,其語法如下:
TIMEDIFF(時間1, 時間2)
它會計算 時間1
減掉 時間2
的值,其中 時間1
與 時間2
的資料型態可以是 time 或 datetime,以下是簡單的範例:
-- 計算間隔時間 SELECT TIMEDIFF('2019-11-13 12:33:26', '2019-11-05 14:20:30');
+--------------------------------------------------------+ | TIMEDIFF('2019-11-13 12:33:26', '2019-11-05 14:20:30') | +--------------------------------------------------------+ | 190:12:56 | +--------------------------------------------------------+
-- 計算間隔時間 SELECT TIMEDIFF('14:20:30', '12:33:26');
+----------------------------------+ | TIMEDIFF('14:20:30', '12:33:26') | +----------------------------------+ | 01:47:04 | +----------------------------------+
若 時間1
小於 時間2
,則計算出來的結果就會是負的值:
-- 計算間隔時間 SELECT TIMEDIFF('2019-11-05 14:20:30', '2019-11-13 12:33:26');
+--------------------------------------------------------+ | TIMEDIFF('2019-11-05 14:20:30', '2019-11-13 12:33:26') | +--------------------------------------------------------+ | -190:12:56 | +--------------------------------------------------------+
TIMESTAMPDIFF
也可以用來計算時間間隔,不過它會將計算結果轉換為指定的單位:
TIMESTAMPDIFF(時間單位, 時間1, 時間2)
其可用的 時間單位
跟 TIMESTAMPADD
函數相同,以下是簡單的範例:
-- 計算間隔時間 SELECT TIMESTAMPDIFF(DAY,'2019-11-05 14:20:30', '2019-11-13 12:33:26');
+-----------------------------------------------------------------+ | TIMESTAMPDIFF(DAY,'2019-11-05 14:20:30', '2019-11-13 12:33:26') | +-----------------------------------------------------------------+ | 7 | +-----------------------------------------------------------------+
TIMESTAMPDIFF
在計算時是以 時間2
減掉 時間1
,剛好跟 TIMEDIFF
相反。
參考資料:MySQL 官方文件