3 回答

TA貢獻1840條經驗 獲得超5個贊
您可以使用TIMEDIFF()和TIME_TO_SEC()函數,如下所示:
SELECT TIME_TO_SEC(TIMEDIFF('2010-08-20 12:01:00', '2010-08-20 12:00:00')) diff;
+------+
| diff |
+------+
| 60 |
+------+
1 row in set (0.00 sec)
您還可以使用其他答案中建議的@AmberUNIX_TIMESTAMP()函數:
SELECT UNIX_TIMESTAMP('2010-08-20 12:01:00') -
UNIX_TIMESTAMP('2010-08-20 12:00:00') diff;
+------+
| diff |
+------+
| 60 |
+------+
1 row in set (0.00 sec)
如果您使用的是TIMESTAMP數據類型,我猜想UNIX_TIMESTAMP()解決方案會稍微快一點,因為TIMESTAMP值已經存儲為整數,代表自紀元(Source)以來的秒數。引用文檔:
在列UNIX_TIMESTAMP()上使用時TIMESTAMP,該函數直接返回內部時間戳記值,而沒有隱式的“字符串到Unix時間戳記”轉換。
請注意,TIMEDIFF() 返回數據類型為TIME。TIME值的范圍可以從“ -838:59:59”到“ 838:59:59”(大約34.96天)

TA貢獻1829條經驗 獲得超7個贊
UNIX_TIMESTAMP(ts1) - UNIX_TIMESTAMP(ts2)
如果要獲得無符號的差異,請ABS()在表達式周圍添加一個。
或者,您可以使用TIMEDIFF(ts1, ts2),然后通過將時間結果轉換為秒TIME_TO_SEC()。
添加回答
舉報