2013-08-26 6 views
4
time1: 2013-08-26 16:33:00 
time2: 2013-08-26 15:10:00 

$query="UPDATE `FlightSchedule` 
SET delay = MINUTE(TIMEDIFF(time1, time2)) 
WHERE `flightNum_arr`='".$flightNum_arr."';"; 

Сохраняет значение 23 как задержку. Вместо этого правильный ответ должен составлять 83 минуты. Как его получить?Конвертировать TIMEDIFF в часы и минуты

+1

сделать то же самое с 'hours', а также, умножать' hour' диф на '60' и добавить его в ваш' delay' ... – Joum

+1

это может также help: http://stackoverflow.com/questions/2174058/mysql-timediff-to-hours – Joum

+0

Я очень надеюсь, что '$ flightNum_arr' [правильно сбежал] (http://bobby-tables.com/), потому что когда вы см. такие вещи, используя конкатенацию строк для составления запросов, практически каждый раз, когда это не так. – tadman

ответ

4

Я думаю, что вы ищете:

$query="UPDATE `FlightSchedule` 
SET delay = CEIL((UNIX_TIMESTAMP(time1) - UNIX_TIMESTAMP(time2))/60) 
WHERE `flightNum_arr`='".$flightNum_arr."';"; 

Кроме того, существует TIME_TO_SEC функция - и, так как она обеспечивает результат в секундах, вам нужно разделить его на 60 тоже.

+0

Этот код отлично работает. Благодарю. –

4

Он возвращает 1 hour 23 min. Вы должны получить час.

Следующие коды возвращают 4980 сек. И вы должны разделить 60 минут.

Вы можете использовать TIME_TO_SEC

TIME_TO_SEC(TIMEDIFF(time1, time2))/60 
+0

Странно, но в моем случае это говорит: «Запрос не возвращал никаких результатов». Запись не сохранена. UPDATE 'FlightSchedule' SET delay = TIME_TO_SEC (TIMEDIFF (time1, time2))/60 WHERE' flightNum_arr' = '3911'; –

+0

Не могли бы вы напрямую запустить phpMyadmin? – Bora

+0

Да, я сделал это. Результат тот же. –