我之前没有写过任何MySql
存储过程,所以我根本不知道它们。我有一个数据库表,其中有一些记录。主要列是dateTime
- 这条记录何时保存在数据库中。
我编写了 MySql 存储过程来选择指定日期的每条记录:
CREATE PROCEDURE getMessages(IN dateFrom DATETIME)
SELECT * FROM EsbMessage WHERE dateTime <= dateFrom;
这是电话:
CALL getMessages('2012-10-04 13:11:09');
这工作正常,它返回我指定日期的记录。
我需要做的是:
- 如果记录超过一周,我需要更新另一列。
- 如果记录超过一年,我需要删除该记录。
我可以通过编程轻松地做到这一点,但在这种情况下,我必须使用存储过程来做到这一点。
所以我在想这样的事情:
CREATE PROCEDURE updateMessages(IN dateFrom DATETIME)
BEGIN
SELECT * FROM EsbMessage WHERE dateTime <= dateFrom;
#for each message
#if the message is over one week old but not over one year old:
UPDATE EsbMessage SET body = '';
#if message is over one year old:
DELETE FROM EsbMessage WHERE dateTime = #message.dateTime
END
但是我不知道如何在存储过程中使用 for 循环,以及如何根据我的要求编写 if 语句以及我现在不知道如何计算 MySql 中的日期。例如,如果我有当前日期,那么我需要从当前日期中减去 365 天。
有人可以帮我解决这个问题吗?