56,679
社区成员
发帖
与我相关
我的任务
分享
delimiter $$
drop event if exists addplan; -- 创建定时器
create event addplan
on schedule
EVERY 1 MONTH -- 每个月执行一次
STARTS '2019-07-28 22:02:00' -- 定时器执行开始时间
ON COMPLETION PRESERVE ENABLE
do
begin
DECLARE pdate TIMESTAMP; -- 定义变量执行日期
DECLARE sdate TIMESTAMP; -- 定义变量
SET sdate = CURRENT_TIMESTAMP; -- 变量取当前时间
SET pdate = CURRENT_TIMESTAMP;
WHILE pdate < ADDDATE(sdate,INTERVAL +1 MONTH) DO -- 判断执行日期在当月内,循环
INSERT INTO result(devid,devname,checksta,checktime) (SELECT A.devid,A.devname,'未巡检',pdate FROM devinfo A,devcheck B WHERE A.devid=B.devchid AND B.check='daycheck'); -- 插入日检计划明细
set pdate = ADDDATE(pdate,INTERVAL +1 DAY); -- 根据前面插入的检查类型,执行日期+1天
END WHILE; -- 结束循环
end $$
delimiter;
插入sql处可以根据不同巡检类型插入,执行日期间隔需根据检查类型来设定,比如月检,ADDDATE(pdate,INTERVAL +1 Month),以此类推。
最后我们来看下结果:
SELECT * FROM result;
希望对你有帮助