我想为表创建一个事件:-
ACCOUNTS(id char(5),balance decimal(10,2), date_created date)
该DATE_CREATED
列的值将始终为 = NOW()
,即该行插入表中的日期
我希望每行的余额在每 31 天后增加 2% ,根据其 DATE_CREATED
列,即DATE_CREATED+31 Days
每行的 () 之后。
我想知道这是否可能,如果可能,那么它的代码是什么?
我想为表创建一个事件:-
ACCOUNTS(id char(5),balance decimal(10,2), date_created date)
该DATE_CREATED
列的值将始终为 = NOW()
,即该行插入表中的日期
我希望每行的余额在每 31 天后增加 2% ,根据其 DATE_CREATED
列,即DATE_CREATED+31 Days
每行的 () 之后。
我想知道这是否可能,如果可能,那么它的代码是什么?
您需要编写一个UPDATE
使用DATEDIFF
和MOD
尝试类似:
UPDATE Accounts
SET Balance = Balance * 1.02
WHERE DATEDIFF(now(),date_created) MOD 31 = 0;
这是SQL Fiddle。
您可以安排它每天运行。这可能是你最好的方法。
祝你好运。
这将每天运行,但基于where clause
它将更新表。
CREATE EVENT `myEvent`
ON SCHEDULE AT CURRENT_TIMESTAMP
DO BEGIN
-- update balance by 2%
UPDATE yourtable
SET balance = balance * 1.02
WHERE DateDiff(CurDate(), created_date) MOD 31 = 0
END;
如果您正在寻找Created_Date
从今天起有 31 天间隔的更新,那么Where clause
:
WHERE Date_Format(Date_Add(CurDate(), interval 31 day),'%Y-%m-%d') = Date_Format(CurDate(),'%Y-%m-%d')
或者
WHERE DateDiff(CurDate(), created_date) = 31