2015-05-05 296 views
4

我想查看我的數據庫日期和時間,並將它們與當前日期和時間進行比較,並說出哪個日期和時間更長。Mysql比較存儲到今天日期的日期

<?php 
include_once("db.php"); 
$date = new DateTime(); 
//echo $date->format('Y-m-d H:i:s') 

$query = "SELECT timedate, email FROM mailer"; 
$result = mysql_query($query); 
echo "<table>"; 
while($row = mysql_fetch_array($result)){ 
     $tot = $row['timedate']; 
     $ema = $row['email']; 
    if($tot > $date) { 
    //echo "<tr><td>" .$row['timedate']."</td><td>"; 
    echo"database dates higher then now dates" . "<br>"; 
    echo "<tr><td>" .$row['email']."</td><td>" ."<br>"; 
    echo "<tr><td>" .$row['timedate']."</td><td>" ."<br>"; 
} 
else { 
    echo"database dates lower then now dates" . "<br>"; 
    echo "<tr><td>" .$row['email']."</td><td>". "<br>"; 
     echo "<tr><td>" .$row['timedate']."</td><td>" ."<br>"; 
} 

} 
mysql_close(); 
?> 

下面是測試輸出,我得到:

database dates lower then now dates 
[email protected] 
2015-05-04 08:00:00 
database dates lower then now dates 
[email protected] 
2015-05-04 00:00:00 
database dates lower then now dates 
[email protected] 
2015-05-30 00:00:00 

正如你所看到的最後一項是錯誤的,其設置爲5月30日,所以應該是高於現在的日期。我的猜測是我沒有正確使用當前日期,我需要格式化它。

+0

'timedate'的數據類型是什麼? –

+0

類型是日期時間 – alkokarko

回答

5

由於timedatedatetime在PHP中,你可以簡單地使用strtotime

if(strtotime($tot) > time()){ 

}else{ 

} 
+0

是的,thx爲它的解決方案 – alkokarko

0

你不能比較日期這種方式。你必須將它們轉換爲timestamp first.Try與 -

if(strtotime($tot) > strtotime($date)) 
1

你應該先格式化數據庫結果作爲日期比較之前他們。

<?php 
include_once("db.php"); 
$date = new DateTime(); 
//echo $date->format('Y-m-d H:i:s') 

$query = "SELECT timedate, email FROM mailer"; 
$result = mysql_query($query); 
echo "<table>"; 
while($row = mysql_fetch_array($result)){ 
     $tot = DateTime::createFromFormat("Y-m-d H:i:s",$row['timedate']); 
     $ema = $row['email']; 
    if($tot > $date) { 
     echo"database dates higher then now dates" . "<br>"; 
     echo "<tr><td>" .$row['email']."</td><td>" ."<br>"; 
     echo "<tr><td>" .$row['timedate']."</td><td>" ."<br>"; 
    } else { 
     echo"database dates lower then now dates" . "<br>"; 
     echo "<tr><td>" .$row['email']."</td><td>". "<br>"; 
     echo "<tr><td>" .$row['timedate']."</td><td>" ."<br>"; 
    } 

} 
mysql_close(); 
?> 
0

if($tot > $date)你不能直接比較DATATIME值, 你有兩個時間值先轉換他們。

$dateTick = strtotime($date); $totTick = strtotime($tot);

後,只有比較

if($dateTick < $totTick)

0

這可以說是不易出錯,而且可能更有效地讓數據庫做到這一點。

SELECT timedate, (timedate < NOW()) AS earlier, email FROM mailer; 

這將返回實時生成一個新的「列」稱爲「前面,」告訴你哪個日期之前有是一個「1」(真)與否,以「0」(假)如果timedate爲null,則爲NULL。

您還可以通過CASE表達式獲得時髦感,組合多個邏輯測試以獲取新信息。這些操作在MySQL中通常非常快。