-3

データベースに次を含む一時テーブルがあります。

 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

max(time)「TIMEDIFF」スクリプト ( 、 )を試しましmin(time)たが、必要な出力が得られません。助けてください、私はPHPを使用しています。

4

2 に答える 2

1

MySQL ソリューション:

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

SQLFIDDLE

于 2013-06-01T00:00:00.730 に答える
0

PHP ソリューション:

(同じ @Barmar のソリューションですが、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;
}
?>
于 2013-06-01T00:05:52.133 に答える