2012-11-02 58 views
-1

找遍了,我有太多的試驗/錯誤,但沒有luck.So這裏有雲:秒從MySQL日期進入過去和現在

我想看看有多少秒已經因爲從日期已過插入了NOW()date("Y.m.d H:i:s")格式的當前日期的Mysql條目。這裏是我的php函數(取自用戶發佈的@ stackoverflow)。

function multipost(){ 
global $dbh; 
$ip= $_SERVER['REMOTE_ADDR']; 

$sql = "select * from table where ip='$ipa' order by date_time desc limit 1"; 

foreach ($dbh->query($sql) as $row) { 
    $timeFirst=$row['date_time']; 
    $timeSecond=date("Y.m.d H:i:s"); 
    $differenceInSeconds = $timeSecond-$timeFirst; 
    echo $differenceInSeconds; 
} 

我也試過strtotime($row['date_time'];)但沒有運氣。 有什麼幫助嗎? 在此先感謝。

+0

是你的MySQL日期的日期格式或日期時間顯示格式? (MM-DD-YYYY或MM-DD-YYYY HH:MM:SS)? – George

+0

試驗/錯誤不總是好的。更好的是進入知道。您不能將日期作爲字符串在PHP中進行減少。請首先讓您自己熟悉PHP的日期和時間處理:http://php.net/datetime - 如果您對PHP中字符串的工作方式有疑問,請參閱http://php.net/string – hakre

+0

yeap忘記提及mysql日期在2012-10-30 20:56:42格式YY:MM:DD H:我:s – Theodoros80

回答

1
function secDifference($date,$time){ 
    $dateVals = explode("-",$date); 
    $timeUnix = 0; 
    if($time == 0){ 
     $timeUnix = date("U",mktime(0,0,0,$dateVals[1],$dateVals[2],$dateVals[0])); 
    } 
    else{ 
     $tempVals = explode(" ",$dateVals[2]); 
     $dateVals[2] = $tempVals[0]; 
     $timeVals = explode(":",$tempVals[1]); 
     $timeUnix = date("U",mktime($timeVals[0],$timeVals[1],$timeVals[2],$dateVals[1],$dateVals[2],$dateVals[0])); 
    } 
    return (date("U")-$timeUnix); 
} 

複製此功能。 獲取日期的差異,NOW:

secDifference("12/03/1993"); 

獲取日期時間,現在的區別:

secDifference("12/03/1993 14:54:32",1); 

希望它能幫助。

+0

沒有看到您對您的問題的最新評論。在這種情況下,請使用第二個函數調用。 – George

+1

我使用echo secDifference($ row ['date_time'],1);它的工作! – Theodoros80

+0

這個功能是有問題的。 *聳肩*只有你可以使用它「解決」一個問題,並不意味着你應該使用它。 – hakre

0

如果你只是想知道的時間,以秒的差異,您可以使用MySQLs TIMESTAMPDIFF()了點。您的查詢字符串應該是這樣的:

$sql = "SELECT *, TIMESTAMPDIFF(SECOND, date_time, NOW()) AS time_diff FROM table WHERE ip='$ipa' ORDER BY date_time DESC LIMIT 1"; 

注意說的TIMESTAMPDIFF返回存儲爲「time_diff」。您的結果將添加一列作爲'time_diff'。

有關更多文檔,請參閱this page

1

你可以讓MySQL爲您返回值:

select *, TIMESTAMPDIFF(SECOND, NOW(), date_time) AS time_diff from table where ip='$ipa' order by date_time desc limit 1