0

我有这样的mysql日期2013-10-16 17:44:13,我需要从那里得到+30天。我不能使用例如。10th (month) 并将其更改为 11th (month) 因为这可能是 31 天或 29 取决于月份

我只能想到将2013-10-16 17:44:13时间戳转换为+30*24*60*30,然后将这个新的时间戳转换回mysql格式

有没有更好的办法?

4

2 回答 2

3

您可以strtotime为此使用:

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

或者直接在 MySQL 中使用DATE_ADD

SELECT DATE_ADD(`date`, INTERVAL 30 DAY) as `date` FROM `table`

如果您运行较新版本的 MySQL,则不需要使用DATE_ADD

SELECT (`date` + INTERVAL 30 DAY) as `date` FROM `table`

请注意,虽然strtotime足够聪明,但 MySQL要求您使用DAY. 不是DAYS

编辑:我无法找到DATE_ADD旧版本需要的任何证据,但我发誓我在某处听说过。把它和一粒盐一起吃,然后用你喜欢的任何方法。

于 2013-10-16T18:39:04.460 回答
2

既然你提到了 mysql,你可以用 mysql 函数来做

select NOW() + interval 30 day as NEW_DATE

现在,可以用您数据库中的日期替换

select date_field + interval 30 day as NEW_DATE from YOUR_DB
于 2013-10-16T18:41:06.177 回答