2012-06-13 51 views
-1

我想採取的日期應該在到期日的2天之前。我正在從MYSQL數據庫獲取到期日期。這裏是我的代碼:減去從mysql數據庫檢索2天使用PHP的日期

$result=mysql_query("SELECT * from assets"); 

while($row=mysql_fetch_array($result)) 
{ 

echo "Start date:".$row["start_date"]; 

echo "Expiry date:".$row["expiry_date"]; 

$expdate=$row["expiry_date"]; 

$date=date('Y-m-d',strtotime('+2 days', $expdate)); 

echo "2 Days before Expiry date:".$date; 

} 

但是這樣我得到的輸出:

Start date:2012-05-01 

Expiry date:2012-06-30 

2 Days before Expiry date:1970-01-03 

你能幫助我嗎?

+1

請不要使用'mysql_ *'函數來編寫新代碼。他們不再維護,社區已經開始[棄用程序](http://goo.gl/KJveJ)。查看[*紅色框*](http://goo.gl/GPmFd)?相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定哪些,[這篇文章](http://goo.gl/3gqF9)會幫助你。如果你選擇PDO,[這裏是很好的教程](http://goo.gl/vFWnC)。 –

回答

0

你已經要求一天是在到期日前2天。

$date=date('Y-m-d',strtotime($expdate.'-2 days')); 
2

的的strtotime函數有兩個參數

int strtotime (string $time [, int $now = time() ]) 

第二個應該是一個整數,但它看起來像你正在傳遞一個字符串。 您需要先將其轉換爲整數。這應該工作:

$expdate_int = strtotime($expdate); 
$date = date('Y-m-d', strtotime('+2 days', $expdate_int)); 

如果合適的話,你也可以看看這樣做的日期數學在SQL

SELECT expdate, DATE_SUB(expdate, INTERVAL 2 DAY) AS two_days_before_exp 
+0

好的..謝謝你..我現在正在... – Raju

0

更改您的以下行

$date=date('Y-m-d',strtotime('+2 days', $expdate)); 

到以下

$date=date('Y-m-d',strtotime('-2 days', strtotime($expdate))); 

strto時間第二個參數需要時間戳(不是字符串日期)。 「-2」使它在2天前。