我在和一个网站打交道,人们可以用虚拟货币订阅某些东西。我需要在数据库中输入订阅结束的日期。我的表中有一个字段“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()

10-07 12:37