【发布时间】:2009-07-17 12:23:05
【问题描述】:
我正在处理一个网站,人们可以在该网站上订阅某些东西以获得虚拟货币。我需要将订阅结束的日期放在数据库中。我的表有一个“过期”字段,即 DATE。
当用户延长他的订阅时,我需要在这个日期上增加 1 个月。但是,如果订阅已经过期,我想将“过期”设置为从现在起 1 个月,而不是从订阅过期后的 1 个月。
我试过了:
UPDATE shop_user_rights SET expiration = ADDDATE(MAX(expiration, CURDATE()), INTERVAL 1 MONTH);
和
UPDATE shop_user_rights SET expiration = FROM_UNIXTIME(
MIN(
UNIX_TIMESTAMP(expiration),
UNIX_TIMESTAMP(CURDATE())
)
),
expiration = ADDDATE(expiration, INTERVAL 1 MONTH);
但两者都给出语法错误。有没有办法在 1 个查询中做到这一点,还是我必须事先使用一些 SELECT 查询?
【问题讨论】: