MySQL日期时间添加天数

时间:2016-02-09 10:07:55

标签: mysql

如何在MySQL中添加日期时间,如下例所示? (真的很抱歉我的英语不好,我不知道如何解释。)

示例:

TABLE成员

+----+------+---------------------+
| id | name |     expiry_date     |
+----+------+---------------------+
|  1 | A    | 2016-02-09 09:20:00 |
+----+------+---------------------+

如果会员A购买套餐7天expiry_date应该是:

+----+------+---------------------+
| id | name |     expiry_date     |
+----+------+---------------------+
|  1 | A    | 2016-02-16 09:20:00 |
+----+------+---------------------+

两天后(2月11日),套餐将在5天后到期,然后会员A再次购买套餐7天expiry_date应该是这样的:

+----+------+---------------------+
| id | name |     expiry_date     |
+----+------+---------------------+
|  1 | A    | 2016-02-23 09:20:00 |
+----+------+---------------------+

现在包裹将在12天(5 + 7)过期。

我尝试过我的代码:

UPDATE member SET expiry_date = now() + INTERVAL 7 DAY WHERE id = 1

但它始终按当前日期时间和+ 7天设置,如:

如果今天是2016-02-11 09:20:00当我运行我的代码expiry_date时,会将日期时间从2016-02-11 09:20:00(当前日期时间)设置为2016-02-18 09:20:00

但是我希望它将日期时间从2016-02-16 09:20:00设置为2016-02-23 09:20:00,就像上面的示例一样。

2 个答案:

答案 0 :(得分:2)

您正在尝试增加表格中保存的日期,而不是现在发生的日期。您应该使用列名称,而不是NOW(),而不是expiry_date

有两种方法可以做到这一点。第一个是,正如Vipin Jain指出的那样,你可以使用DATE_ADD。但是,请使用您的列名:

UPDATE member SET expiry_date = DATE_ADD(expiry_date , INTERVAL 7 DAY) WHERE id = 1;

或者你可以这样做:

UPDATE member SET expiry_date = expiry_date + INTERVAL 7 DAY WHERE id = 1;

答案 1 :(得分:0)

试试这个

UPDATE member 
SET expiry_date = DATE_ADD(expiry_date , INTERVAL 7 DAY)
WHERE id = 1;

了解更多信息https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add