在MySQL中设置订阅日期

时间:2009-07-17 12:23:05

标签: sql mysql date timestamp

我正在处理一个人们可以订购某些虚拟货币的网站。我需要将订阅结束的日期放在数据库中。我的表有一个字段“到期”,这是一个日期。

当用户延长订阅时,我需要在此日期添加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查询?

1 个答案:

答案 0 :(得分:3)

MIN()MAX()功能用于分组:您需要LEAST()GREATEST()