2015-12-02 51 views
1

我想根據時間戳記時間差異來計算學生在課堂上的總時間。MySQL使用TIMEDIFF計算分鐘()

這裏是我使用的表...

CREATE TABLE Students(
    studentID varchar(255), 
    firstName varchar(255), 
    lastName varchar(255), 
    updated_at TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    total_time INTEGER DEFAULT NULL 
); 

在9:39前)學生記錄更新爲9:40。這裏的差異是1分鐘...所以1被添加到學生total_time。

SQL語句我現在有是...

UPDATE Students SET total_time = TIMEDIFF(CURTIME(), updated_at); 

然而,TIMEDIFF返回一個時間變量,如果我是正確的......我怎麼可以反過來說,在幾分鐘?此外......即使在正確的轉場時間到分鐘的情況下,這種方式也能奏效由於用於updated_at列的「ON UPDATE」方法,我會想到時間戳只會被更新,然後計算的差值總是爲0,因爲兩者是相同的。

更新:重要的是要提到這些記錄可能會每分鐘更新一次以上。

+2

檢查MySQL的'timestampdiff'功能,你可以以分鐘,小時,秒等 –

+0

@AbhikChakraborty這是一個非常好的想法的差異。我不知道這個mysql函數...但它返回一些非常大的數字。我將不得不回去查看我的執行情況。 – Christopher

回答

1

嘗試此查詢 拿到分鐘使用:

UPDATE學生樹立TOTAL_TIME = TIMEDIFF(NOW()的updated_at)/ 60;

得到秒使用:

UPDATE Students SET total_time = TIMEDIFF(NOW(), updated_at)/1; 
+0

這幾乎可以工作,但是當記錄每分鐘更新一次以上時它不會工作,因爲那樣它會將total_time設回0. – Christopher

+0

如果你想要它,你可以像這樣劃分/ 1: UPDATE學生SET total_time = TIMEDIFF(NOW(),updated_at)/ 1; –