我正在尝试使用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!
有人可以就此问题提出建议吗?
提前致谢。
答案 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()
。
我希望它有所帮助。