2012-03-28 94 views
1

什麼是正確的方式來使用MySQL TIMEDIFF,(或類似的)?在數據庫中我有一個名爲date的列,它設置CURRENT_TIMESTAMP。我試圖計算連續CURRENT_TIMESTAMP和現在之間的differene,比呼應,爲所有的行..這是我的腳本sql timediff函數

<?php 
    mysql_connect("localhost","root","");//database connection 
    mysql_select_db("beyondmotors"); 

    $result = mysql_query("SELECT * FROM currentrentals"); 

    echo "<table border='2'> 
    <tr> 
    <th>ID</th> 
    <th>Year</th> 
    <th>Make</th> 
    <th>Model</th> 
    <th>First Name</th> 
    <th>Last Name</th> 
    <th>Insurance</th> 
    <th>Date</th> 
    <th>Notes</th> 
    </tr>"; 

    while($row = mysql_fetch_array($result)) 
    { 
    echo "<tr>"; 
    echo "<td>" . $row['id'] . "</td>"; 
    echo "<td>" . $row['year'] . "</td>"; 
    echo "<td>" . $row['make'] . "</td>"; 
    echo "<td>" . $row['model'] . "</td>"; 
    echo "<td>" . $row['firstname'] . "</td>"; 
    echo "<td>" . $row['lastname'] . "</td>"; 
    echo "<td>" . $row['insurance'] . "</td>"; 
    echo "<td>" . $row['date'] . "</td>"; 
    echo "<td>" . $row['notes'] . "</td>"; 
     echo ("<td><a href=\"edit_form.php?id=$row[id]\">Edit</a></td></tr>"); 
     echo "</tr>"; 
     } 
    echo "</table>"; 

在此先感謝

回答

3

這可能嚴重依賴於您的輸出。

例如,TIMEDIFF()輸出是小時,分鐘,秒。因此,它僅限於數據類型TIME

給定一個單位SECOND,TIMESTAMPDIFF()是一個更強大的解決方案。

所有這些在MySQL Date and Time functions中都有詳細記錄。

最後,您通常會看到使用代碼完成的這些計算。這不是用SQL。在你的情況下PHP。您可以通過從strtotime()減去時間戳來進行簡單的算術運算。或者,如果您使用PHP> = 5.3,則可以使用DateTime::diff

另外,請避免命名您的列關鍵字,即date

0

我會做這樣的:

SELECT (fields), UNIX_TIMESTAMP(date) as date FROM currentrentals 

然後你可以訪問日期$row['date']。現在您可以輕鬆減去這些日期。

$timesince = date(format, time() - $row['date']); 

希望有幫助。