2013-02-11 102 views
3

我需要比較兩個日期,如果一個日期大於另一個則sql將運行。這是我的代碼比較日期和時間php

date_default_timezone_set('Asia/Kuala_Lumpur'); 
$date = date('Y-m-d G:i:s'); 
$query = mysql_query("SELECT * FROM package_transaction"); 
if(mysql_num_rows($query) > 0) { 
    while($row = mysql_fetch_array($query)) {   
     $transac_code = $row['transac_code']; 
     $duedate = $row['payment_due']; 

     if(strtotime($date) > strtotime($duedate)) 
     { 
      mysql_query("UPDATE package_transaction SET `status` = 'cancelled' WHERE `payment_due` = `$duedate` AND `transac_code` = `$transac_code`"); 

     } 

    } 
} 

但它不工作。請幫助

+0

,請不要使用'mysql_ *'功能,它棄用(見[*紅色框*](http://php.net/manual/en/function.mysql-query.php)),並且容易受到sql注入的影響。使用[* PDO *](http://php.net/manual/en/book.pdo.php)或[* MySQLi *](http://php.net/manual/en/book.mysqli.php) 。另外,「它不工作」並沒有真正告訴我們很多......代碼在哪一行失敗?什麼是錯誤? etc – alfasin 2013-02-11 04:39:10

+2

那麼,什麼問題 – Rab 2013-02-11 04:40:06

+0

您可以隨時將付款的截止日期存儲爲unix時間戳,然後您可以將所有代碼簡化爲1行:'UPDATE ... WHERE \'payment_due \'<$ currentTime' – Supericy 2013-02-11 04:40:11

回答

1

你能嘗試和使用的strtotime

$duedate = $row['payment_due']; 
$duedate = $duedate->format('Y-m-d G:i:s'); 
+0

它已經是這種格式,但仍然沒有變化 – arukiri123 2013-02-11 04:53:36

2

嘗試在此之前使用的日期格式,

date("Y-m-d", strtotime($date)) > date("Y-m-d", strtotime($duedate)) 
+0

它給了我1的值。這是什麼意思? – arukiri123 2013-02-11 04:54:00

+2

這意味着一個真實的。這是一個比較,結果是布爾結果。 – Maerlyn 2013-02-11 05:04:44