我是MySQL的新手,我有一个计划在星期一到期。 我在尝试添加查询/触发器以执行以下操作时遇到问题:
我的项目breif说:“客户注册后,他们将在30天免费试用期内为客户服务,然后付款” 因此,我正在尝试(但没有通过)添加一些方法来检查帐户是否已注册30天,如果已注册,则帐户类型将更改为“付费订阅”,否则将保留为“免费试用” < / p>
我可以分开工作,但不能一起工作。
这是我的桌子:
customer_id varchar (100) NOT NULL,
first_name varchar (20) not null,
last_name varchar (20) not null,
phone_no varchar (20) not null,
email_address varchar (20) not null,
address varchar (100) not null,
city varchar (20) not null,
country varchar (20) not null,
date_of_registration date,
account_type varchar (20) not null,
PRIMARY KEY (customer_id)
) DATA DIRECTORY='c:/mamp';
谢谢!
答案 0 :(得分:1)
根据您的要求,您可以执行以下操作(针对IF的语法)
SELECT
first_name, last_name, email_address,
IF(NOW() > date_of_registration + INTERVAL 30 DAY, 'paid', 'free') as status
FROM users WHERE id = XX
当然,请选择所需的字段,并根据需要调整WHERE子句。 您将拥有一个状态值,其中包含“已付费”或“免费”
!!!但是!从逻辑的角度来看,这可能不是您想要的。实际上,如果帐户的使用期限超过30天,则先前的查询将返回“已付款”。之后,您必须在处理中检查account_type。
我建议您添加一个available_until字段:
如果用户在30天内付款。 付款后,SET account_type =“已付款”,available_until = {您想要的时间}
您现在只需检查帐户available_until是否在当天之后,并且您实际上并不关心帐户的类型。