我在和一个网站打交道,人们可以用虚拟货币订阅某些东西。我需要在数据库中输入订阅结束的日期。我的表中有一个字段“expiration”,这是一个日期。
当用户扩展订阅时,我需要在此日期后添加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);
但两者都有语法错误。在一个查询中是否有这样做的方法,或者我必须事先使用一些select查询?
最佳答案
MIN()
和MAX()
函数用于分组:您需要的是LEAST()
和GREATEST()
。