2015-12-02 5 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 возвращает переменное время, если я правильно ... как я могу включить, что минуты? ТАКЖЕ ... будет ли это работать даже при правильной кастинге до минут? Из-за метода «ON UPDATE», используемого для столбца updated_at, я бы предположил, что временная метка будет просто обновлена, тогда рассчитанная разница всегда будет равна 0, так как они будут одинаковыми.

ОБНОВЛЕНИЕ: Очень важно упомянуть, что эти записи, вероятно, будут обновляться более одного раза в минуту.

+2

проверка MySQL 'timestampdiff' функции, вы можете получить разницу в минутах, часах, секундах и т.д. –

+0

@AbhikChakraborty, которая была очень хорошей идеей. Я не знал об этой функции mysql ... однако он возвращал очень большие числа. Мне придется вернуться и проверить мою реализацию. – Christopher

ответ

1

попробовать этот запрос получить минут использовать это:

UPDATE Студенты SET Total_time = TimeDiff (NOW(), updated_at)/60;

получить секунд используйте:

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

Это почти работает, оно не работает, когда запись обновляется более одного раза в минуту, хотя ... потому что тогда он установит total_time обратно на 0. – Christopher

+0

, если вы хотите его вторым, вы можете разделить/1 следующим образом: ОБНОВЛЕНИЕ Студенты SET total_time = TIMEDIFF (NOW(), updated_at)/1; –

Смежные вопросы