mySQL比較兩個datetime類型的時間間隔,以秒為單位:
SELECTTIME_TO_SEC(TIMEDIFF('2009-02-09 11:24:46','2009-02-09 10:23:46'));
先看SELECT TIMEDIFF('2009-02-09 11:24:46','2009-02-09 10:23:46')01:01:00
SELECT TIME_TO_SEC('01:01:00')
3660
因此便知兩個datetime數據之間相差的秒數。
如果我們考慮這兩個datetime數據先用TIME_TO_SEC轉化為各自秒數,再來相減,不是一樣的效果嗎?
SELECT TIME_TO_SEC('2009-02-09 11:24:46')-TIME_TO_SEC('2009-02-09 10:23:46')
3660
看似這種方法也ok,不過我們再觀察一組數據,你就清楚為什麼不能用這種方式來比較兩個datetime數據之間的時間間隔了。
我們現在改用'2009-02-08 11:24:46'和'2009-02-09 10:23:46'比較:
SELECT TIME_TO_SEC('2009-02-08 11:24:46')-TIME_TO_SEC('2009-02-09 10:23:46')
3660
奇怪了,左邊參數已經比右邊參數提早一天了,為什麼秒數相減還是正值呢?
原來,TIME_TO_SEC只會把datetime數據的time部分轉化為秒數,不會關心date誰大誰小,所以要比較兩個datetime數據,先得TimeDiff一下,再轉化為秒數,即開頭寫的:
SELECT TIME_TO_SEC(TIMEDIFF('2009-02-09 11:24:46','2009-02-09 10:23:46'));