一、使用DATEDIFF函數
DATEDIFF函數可以計算兩個日期之間的天數差異。
SELECT DATEDIFF('2019-08-01', '2019-07-01');
這將返回31。兩個日期參數的位置可以交換,因為結果取絕對值。
如果需要計算兩個時間戳之間的天數差異,則必須將這些時間戳轉換為日期。
SELECT DATEDIFF(FROM_UNIXTIME(1567248000), FROM_UNIXTIME(1564569600));
這將返回19,其中1567248000和1564569600分別是2019年9月1日和2019年8月1日的時間戳。
DATEDIFF函數可以計算任意兩個日期之間的天數差異,包括過去的日期和將來的日期。
SELECT DATEDIFF('2019-08-01', '2021-08-01');
這將返回-730,因為2019年8月1日是從2021年8月1日倒數的730天。
二、使用TIMESTAMPDIFF函數
TIMESTAMPDIFF函數可以計算兩個時間戳之間的差異,並將結果以所需單位返回(秒、分鐘、小時、天等)。
SELECT TIMESTAMPDIFF(SECOND, '2019-08-01 00:00:00', '2019-08-01 00:00:30');
這將返回30,因為兩個時間戳的差異為30秒。
在計算兩個日期之間的差異時,可以將日期轉換為UNIX時間戳,並使用TIMESTAMPDIFF函數。為了將TIMESTAMPDIFF函數的結果轉換為天數,需要將它除以86400(24小時** 60分鐘 * 60秒)。
SELECT TIMESTAMPDIFF(SECOND, '2019-08-01 00:00:00', '2019-08-03 00:00:00') / 86400;
這將返回2,因為8月1日至8月3日之間的天數是2。
三、使用DATEDIFF和DATE_ADD函數結合實現計算天數差異
如果需要計算兩個日期之間的時間差異,可以使用DATEDIFF和DATE_ADD函數相結合。
SELECT DATEDIFF(DATE_ADD('2019-08-01', INTERVAL 1 MONTH), '2019-08-01');
這將返回31,因為從2019年8月1日到2019年9月1日(2019年8月有31天)。
可以將日期和時間結合使用,例如計算2019年8月1日13:00與2019年8月2日9:30之間的時間差。
SELECT TIMESTAMPDIFF(HOUR, '2019-08-01 13:00:00', '2019-08-02 09:30:00');
這將返回20,因為13:00到中午12:00是11小時,中午12:00到9:30是9個半小時,總和為20個半小時(20小時)。
總結
MySQL提供了DATEDIFF和TIMESTAMPDIFF函數,可以輕鬆計算兩個日期或時間戳之間的時間差異。DATE_ADD函數可以與DATEDIFF組合使用以計算任何兩個日期之間的時間差異。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/245177.html