MySQL 中的時間差是常常需要進行計算的,常見的使用場景有計算兩個日期之間的天數、時長等等。在 MySQL 中,時間差的計算通常使用 DATEDIFF 和 TIMEDIFF 這兩個函數進行計算。
-- 計算兩個日期之間的天數 SELECT DATEDIFF('2022-01-01', '2021-12-01'); -- 計算兩個時刻之間的時長 SELECT TIMEDIFF('13:00:00', '12:30:00');
DATEDIFF 函數接收兩個日期參數,返回它們之間的天數差。TIMEDIFF 函數接收兩個時間參數,返回它們之間的時長差,返回的結果格式為時:分:秒。
如果需要在結果中去掉時、分、秒、毫秒中的某一位,可以使用 MySQL 中的一些日期函數對結果進行格式化或截取,例如:
-- 計算兩個日期之間的月數 SELECT PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM '2022-01-01'), EXTRACT(YEAR_MONTH FROM '2021-12-01')); -- 計算兩個時刻之間的小時差 SELECT TIMESTAMPDIFF(HOUR, '12:30:00', '13:00:00');
PERIOD_DIFF 函數計算兩個日期之間的月數差,它接收的參數格式必須為 YYYYMM。EXTRACT 函數提取出日期或時間值中的年份或月份,然后將其拼接為一個整數,作為 PERIOD_DIFF 函數的參數。
TIMESTAMPDIFF 函數用于計算時間差,第一個參數指定要計算的時間單位,第二個和第三個參數用于指定開始和結束的時間值,返回值為整數。
MySQL 中的時間差計算很方便,使用 DATEDIFF 和 TIMEDIFF 函數就能滿足大部分的需求。如果需要處理更加復雜的時間差問題,可以結合使用其他函數,在 SQL 中完成特定的計算。