使用PHP减去从mysql数据库检索2天的日期

时间:2012-06-13 11:00:40

标签: php mysql

我想在到期日的2天之前取日期。我从MYSQL数据库获得到期日期。这是我的代码:

$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 

你能帮我吗?

5 个答案:

答案 0 :(得分:3)

http://php.net/manual/en/function.strtotime.php

PHP的strtotime()函数的第二个参数需要一个Unix时间戳。试试这个:

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

答案 1 :(得分: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

答案 2 :(得分:0)

您已要求在到期日前2天的某一天。

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

答案 3 :(得分:0)

strtotime('+2 days', $expdate)

第二个参数必须是时间戳

http://php.net/strtotime

答案 4 :(得分:0)

更改以下行

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

以下

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

strtotime第二个参数需要timestamp(不是字符串日期)。 “-2”在2天前完成。