
使用mysql存储过程加定时任务(job)实现把表的数据按月分类创建历史表并把原表数据转移到历史表中。
注:如果执行报语法错误,创建存储过程时和结束时,输入分隔符
-- 删除原表数据
SET @deleteSql = CONCAT("DELETE FROM result where owner_id IN (SELECT owner_id FROM (SELECT owner_id FROM result where DATE_FORMAT(create_date,'%Y%m')=",@loop_table," AND DATE_FORMAT(create_date,'%Y%m%d')<=DATE_FORMAT(DATE_SUB(CURDATE(),INTERVAL 30 DAY),'%Y%m%d') )t1);");
PREPARE delsql FROM @delSql;
EXECUTE delsql;
-- 查询现在执行的月份的上个月
SET @preMonthStr = DATE_SUB(@preMonthStr,INTERVAL 1 MONTH);
-- 如果循环到今年1月,结束循环
IF @loop_table = CONCAT(@dateStr,'01') THEN
LEAVE loop_label;
END IF;
END LOOP loop_label;
END IF;
END IF; -- 提交事务 COMMIT; END DELIMITER;
