如何用PHP添加一个月到特定日期?

时间:2018-05-15 16:41:15

标签: php mysql date

我使用now()函数来获取日期。我试图添加一个月有很多功能,如:

$today= date("Y-m-d");
$date1 = date('Y-m-d', strtotime($today, ' + 1 month'));

并在加载$date1到MySQL DB之后,但是当我在DB中看到插入的日期是0000-00-00时。 我该如何在这个月添加?

2 个答案:

答案 0 :(得分:1)

你使这变得比它需要的更复杂。

$date1 = date('Y-m-d', strtotime(' + 1 month'));

Demo

如果您没有通过日期和时间,

strtotime()将假设“现在”。

否则,你调用它的方式,你应该看到这个错误:

  

警告:strtotime()期望参数2为整数,字符串在/ tmp / execpad -a8173d5d91cb / source-a8173d5d91cb中给出

这是因为strtotime()期望第二个参数是Unix时间戳,你清楚地提供了一个字符串。壁橱的近似代码将是

$today= time();
$date1 = date('Y-m-d', strtotime(' + 1 month', $today));

Demo

如果日期仍未正确进入数据库,那么您的日期代码之外就会出现问题。

答案 1 :(得分:0)

将MySQL中的日期调高为0000-00-00 00:00:00通常表示您尝试存储在数据库中的日期没有有效格式/未被MySQL识别为日期。也许这是插入或更新日期值的方式有问题吗?

您还可以直接在MySQL中添加一个月的日期,而无需使用MySQL的内置函数DATE_ADD()在PHP中进行计算:

SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH);

例如,查询

SELECT DATE_ADD('2018-05-15 12:34:56', INTERVAL 1 MONTH);

将返回结果:

+---------------------------------------------------+
| DATE_ADD('2018-05-15 12:34:56', INTERVAL 1 MONTH) |
+---------------------------------------------------+
| 2018-06-15 12:34:56                               |
+---------------------------------------------------+
1 row in set (0.00 sec)

使用它你也可以直接将日期值更新为提前一个月的日期:

UPDATE table_name SET column_name = DATE_ADD(NOW(), INTERVAL 1 MONTH)
WHERE id = your_id;

(根据您的需要替换 table_name column_name id your_id 。)