2013-05-31 2 views
-3

У меня есть временная таблица в базе данных, которая содержит:разница между временами в PHP

userid | time    
--------|--------------------- 
1  | 13-01-24 00:04:01 
1  | 13-01-24 00:04:04 
1  | 13-01-24 00:05:06 
2  | 13-01-24 00:06:06 
2  | 13-01-24 00:06:08 

Я хотел бы получить ответ следующим образом:

1, 0 second 
1, 3 second 
1, 62 second 
2, 60 second 
2, 2 second 

Я пытался «TimeDiff» скрипты (max(time), min(time)), но он не выводит то, что я хочу. Помогите, я использую PHP. Решение

+3

Я думаю, вы должны решить, язык, на который вы собираетесь писать, вы начали с английского языка и ушли куда-то в другое место. – Ibu

+0

«Я пробовал скрипты TIMEDIFF (max (time), min (time)) не соответствует сценарию, который был таким же, как я хочу, каково решение, пожалуйста, помогите! Я использую php» (индонезийский) – Shackrock

+0

Don ' Просто скажи, что у меня есть это, и я хочу этого. Пожалуйста, укажите, что вы действительно хотите в качестве вывода (с подробными сведениями о том, как производится ваш образец). Мы не волшебники. –

ответ

1

MySQL:

SET @prev_time = null; 
SELECT userid, IFNULL(timediff(`time`,@prev_time), 0) diff, 
     @prev_time := `time` 
FROM mytable 
ORDER BY time 

SQLFIDDLE

+0

спасибо MR. Barmar, но я в замешательстве, этот ответ - это скрипты sql, как конвертировать этот ответ в php? Я попытался в php следующим образом: $ prev_waktu = null; $ count1 = mysql_query ("SELECT IFNULL (timediff ('waktu', '$ prev_waktu'), 0) как selisih, '$ prev_waktu': = 'waktu' FROM mdl_temporer_log2"); while ($ jumlah1 = mysql_fetch_array ($ count1)) { $ jumlah1_ = $ jumlah1 ['selisih'];}. но этот скрипт является ошибкой – pucca

+0

Пожалуйста, не оставляйте длинный код в комментариях, его очень трудно прочитать. При необходимости обновите свой вопрос. В ответе Миро Маркаряна есть PHP-решение. – Barmar

0

PHP Решение:

(раствор То же @Barmar «s, но в PHP)

<?php 
$timearray = array("13-01-24 00:04:01", "13-01-24 00:04:04", "13-01-24 00:05:06", "13-01-24 00:06:06", "13-01-24 00:06:08"); 
$prevtimestamp = null; 
foreach($timearray as $it) { 
    $datetime = explode(" ", $it); 
    $date = explode("-", $datetime[0]); 
    $time = explode(":", $datetime[1]); 
    $newtimestamp = mktime($time[0], $time[1], $time[2], $date[1], $date[0], $date[2]); 
    if($prevtimestamp == null) $prevtimestamp = $newtimestamp; 
    echo $newtimestamp - $prevtimestamp . " seconds"; 
    $prevtimestamp = $newtimestamp; 
} 
?> 
Смежные вопросы