刪除三天前的數據的sql
DELETE FROM table WHERE created_on < DATE_SUB(CURDATE(),INTERVAL 3 DAY);
CURDATE() 返回當前日期
CURNOW() 返回當前datetime
INTERVAL 是mysql間隔值,用法爲
INTERVAL expr unit
。INTERVAL 3 DAY
表示三天的間隔
DATE_SUB(start_date,INTERVAL expr unit);
寫一個存儲過程
存儲過程相當於mysql的函數,它是存儲在數據庫服務器中的一組sql語句,通過調用這個函數的名稱來執行這些sql語句命令。
DELIMITER //
create procedure del_data()
BEGIN
DELETE FROM table WHERE created_on < DATE_SUB(CURDATE(),INTERVAL 3 DAY);
END//
DELIMITER ;
DELIMITER是分割符的意思,聲明存儲過程前將"//"聲明爲分隔符,這樣存儲過程中的“;”纔不會被當作分隔符處理。聲明結束後再還原分隔符。
存儲過程也可以帶參數,存儲過程名(參數)
在聲明存儲過程前要先用use database_name
切換到想要應用的數據庫,否則存儲過程會應用到默認數據庫中
查看以及使用存儲過程
查看存儲過程
select * from mysql.proc where db=’數據庫名’;
使用存儲過程
call del_data()
寫一個事件
開啓事件調度器
SET GLOBAL event_scheduler = ON;
創建事件
create event del_event
on schedule
EVERY 1 day
STARTS '2019-3-28 00:00:00'
do call del_data()
從明天的零點開始,每隔一天執行del_data存儲過程