在MySQL中,想要獲取兩個時間之間的時間差,可以使用TIMEDIFF函數(shù)。例如,下面的查詢語句可以獲取兩個時間相差的秒數(shù):
SELECT TIMEDIFF('2021-10-12 13:30:00', '2021-10-12 12:00:00');
如果想要獲取時間差的小時數(shù),可以使用TIME_TO_SEC函數(shù)將秒數(shù)轉(zhuǎn)換為小時,然后再除以3600。例如,下面的查詢語句可以獲取兩個時間相差的小時數(shù):
SELECT TIME_TO_SEC(TIMEDIFF('2021-10-12 13:30:00', '2021-10-12 12:00:00'))/3600;
需要注意的是,如果兩個時間在同一天內(nèi),那么上面的方法是正確的。但如果兩個時間跨越了多天,那么計算的小時數(shù)可能會不準(zhǔn)確,因為上面的方法只是簡單地將秒數(shù)轉(zhuǎn)換為小時。如果需要準(zhǔn)確計算跨越多天的時間差,可以使用DATEDIFF和TIME_TO_SEC函數(shù)來計算天數(shù)和秒數(shù),然后再將它們轉(zhuǎn)換為小時數(shù)。例如,下面的查詢語句可以獲取跨越兩天的時間差:
SELECT (DATEDIFF('2021-10-13 13:30:00', '2021-10-12 12:00:00') - 1) * 24 + TIME_TO_SEC(TIMEDIFF('23:59:59', '2021-10-12 12:00:00'))/3600 + TIME_TO_SEC(TIMEDIFF('2021-10-13 13:30:00', '00:00:00'))/3600;
上面的查詢語句中,先使用DATEDIFF函數(shù)計算兩個時間之間的天數(shù),并減去1,因為第一天只算一部分,第二天才算全天。然后,計算第一天的小時數(shù)和第二天的小時數(shù),最后將它們加起來,得到跨越兩天的時間差的小時數(shù)。