使用php在mysql中添加时间和日期到日期时间?

时间:2015-01-20 14:59:09

标签: php mysql datetime

我正在尝试使用PHP将日期和时间添加到mysql数据库中的datetime字段。

我在mysql数据库中的日期时间存储如下:

2015-01-20 05:10:17

我试图在这个字段中添加5天:

$Date = date();
$end_date = date("Y, n, j, G, i, s", strtotime($Date. ' + 5 days'));

UPDATE myTable SET end_date='$end_date' WHERE randKey='$id'

但是当我查看数据库中的更新时,我会看到end_date字段,如下所示:

0000-00-00 00:00:00

这意味着它已被更新,但出于某种原因,所有内容都已设置为0!

有人可以就此问题提出建议吗?

提前致谢。

3 个答案:

答案 0 :(得分:2)

检查一下:

$end_date = date("Y-m-d H:i:s", strtotime(date("Y-m-d H:i:s"). ' + 5 days'));

MySql以YYYY-MM-DD HH:MM:SS格式存储日期时间。

答案 1 :(得分:2)

而不是尝试将五天添加到当前日期的一个字符串中,使用两个参数strtotime会更容易,因为:

$Date = date();
$end_date = date("Y, n, j, G, i, s", strtotime('+5 days', $Date));

第二个参数指定“当前”时间是什么;也就是说,基于(起始位置)+5天的基础。如果未指定,则默认为time()

答案 2 :(得分:1)

首先,您提供的代码不会在字段值中添加5天,而是在今天的日期前五天。请参阅,如果您的字段包含2015-01-01并且如您所写,您希望在此字段中添加5天,则不应在PHP中添加五天(),因为它将是2015-01-25而不是2015-01-06因此,如果您想在字段值中添加5天,请使用以下命令:

UPDATE myTable SET end_date=DATE_ADD(end_date, INTERVAL 5 DAY) WHERE randKey='$id';

但是如果你想在今天之后五天添加,请使用:

UPDATE myTable SET end_date=DATE_ADD(CURDATE(), INTERVAL 5 DAY) WHERE randKey='$id';

如果您也关心时间,而不仅仅是日期,请使用NOW()代替CURDATE()

我希望它有所帮助。