背景:存在一张表会一直无限制保存一些信息(要删除那些冗余信息)
一、查询Event时间是否开启
show variables like '%sche%';
一般情况下是OFF(我这是开启的情况下,不开启的话你的定时器就不会生效) ,执行下列语句开启
set global event_scheduler=1;
二、编写定时器
1、测试增加的定时器(用于给删除数据时提供测试数据)
DROP EVENT IF EXISTS massege_add (如果名为massege_add 的定时器存在就删除)
CREATE EVENT if not exists massege_add (增加定时器)
ON SCHEDULE EVERY 60 minute (每六十分钟执行一次)
STARTS '2019-11-13 14:15' (从2019年11月13日开始)
ON COMPLETION PRESERVE
ENABLE
DO
INSERT INTO t_emm_device_sim(imei,simSerialNumber) VALUES('11111','22222') (要执行的sql语句)
2、删除冗余信息定时器
DROP EVENT IF EXISTS massege_delete
CREATE EVENT if not exists massege_delete
ON SCHEDULE EVERY 1 DAY (跟上面一样不过这个表达的意思是每天执行一次)
STARTS '2019-11-10 00:00:00'
ON COMPLETION PRESERVE
ENABLE
DO
DELETE FROM t_emm_device_sim WHERE imei = '11111'
三、其他语句
-- 开启事件
alter event massege_add ON
COMPLETION PRESERVE ENABLE;
-- 关闭事件
alter event massege_add ON
COMPLETION PRESERVE DISABLE;
永久开启
在/etc/my.cnf
文件中添加event_scheduler=on
语句,重启mariadb服务后。即可开启。
sql往前推一天
SELECT DATE_FORMAT(date_sub(curdate(),interval 1 day),'%Y-%m-%d');
查一个时间查
SELECT CONCAT((DATE_FORMAT(date_sub(curdate(),interval 1 day),'%Y-%m-%d')),' ','00:00:00');
SELECT CONCAT((DATE_FORMAT(date_sub(curdate(),interval 1 day),'%Y-%m-%d')),' ','23:59:59');