2010-11-29 187 views
27

是否可以計算Mysql中兩個時間戳之間的差異並在幾秒內獲得輸出結果?像2010-11-29 13:16:55 - 2010-11-29 13:13:55應該給180秒。MySql秒之間的兩個時間戳之間的區別?

謝謝

+0

一個非常類似的問題在一天前有人問:http://stackoverflow.com/questions/4289828/calculate-difference-between-two-dates-in-php/ – Orbling 2010-11-29 02:20:47

+1

@Orbling:不,結果非常不同,因爲輸出是在hh:mm:ss – 2010-11-29 03:15:33

+0

@OMG我對這個問題的回答是,接受了一個,是在hh:mm:ss - 其他答案不是,因此它包含了他的答案。你在下面重申了。 – Orbling 2010-11-29 03:19:57

回答

25

使用UNIX_TIMESTAMP function到DATETIME轉換爲以秒爲單位的值,從1月1日開始,1970年:

SELECT UNIX_TIMESTAMP('2010-11-29 13:16:55') - UNIX_TIMESTAMP('2010-11-29 13:13:55') as output 

結果:

output 
------- 
180 

的一種簡單方法處理如果您不確定哪個值比另一個更大 - 請使用ABS function

SELECT ABS(UNIX_TIMESTAMP(t.datetime_col1) - UNIX_TIMESTAMP(t.datetime_col2)) as output 
125

我不認爲接受的答案是一個很好的通用解決方案!

這是因爲1970-01-01之前的日期(以及使用32位整數的遠期日期)UNIX_TIMESTAMP()函數失敗。這可能很容易發生在許多活着的人的出生當天。

更好的解決方案是:

SELECT TIMESTAMPDIFF(SECOND, '2010-11-29 13:13:55', '2010-11-29 13:16:55') 

可以進行修改,返回天的年MONTH小時和分鐘呢!

0

TIMESTAMPDIFF方法僅適用於日期時間格式。如果你只想兩次像'11之間的區別:10:00' 減'10:20:00' ,然後使用

select TIME_TO_SEC('11:10:00')-TIME_TO_SEC('10:20:00') 
相關問題