我之前沒有編寫過任何MySql
存儲過程,所以我根本不知道它們。我有一個數據庫表,裏面有一些記錄。主列是dateTime
- 此記錄保存在數據庫中時。MySql存儲過程更新數據庫記錄
我已經寫的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
但我不知道如何在存儲過程中使用的循環,以及如何在根據我的要求語句編寫和其他的事情我現在沒有如何計算MySql中的日期。對於例如如果我有當前日期,那麼我需要從當前日期減去365天。
有人可以幫我解決這個問題嗎?
閏秒和年? :-) –
;-)我太懶惰了 – Hache