我们可以用set @var=…设置变量,然后用prepare stml from @var设置动态sql语句,最后用EXECUTE stml;执行语句。
1 2 3
SET @sqlstr = CONCAT('rename table test_table_rename to test_table_rename_',DATE_FORMAT(CURDATE(),'%Y_%m')); PREPARE stmt1 FROM @sqlstr ; EXECUTE stmt1 ;
2,开启定时任务
写一个一次性的测试任务
1 2 3 4 5 6 7 8 9 10 11 12 13 14
CREATE EVENT e_test_rename ON SCHEDULE AT CURRENT_TIMESTAMP+INTERVAL 50 SECOND DO BEGIN SET @sqlstr = CONCAT('rename table test_table_rename to test_table_rename_',DATE_FORMAT(CURDATE(),'%Y_%m')); PREPARE stmt1 FROM @sqlstr; EXECUTE stmt1; create table test_table_rename ( id int auto_increment primary key, create_time datetime default CURRENT_TIMESTAMP null ) comment '用来测试重命名的表'; END;
3,最后的定时任务
1 2 3 4 5 6 7 8 9
CREATE EVENT e_test_rename ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD('2020-05-25', INTERVAL 1 MONTH), INTERVAL 30 MINUTE) DO BEGIN SET @sqlstr = CONCAT('rename table test_table_rename to test_table_rename_',DATE_FORMAT(CURDATE(),'%Y_%m')); PREPARE stmt1 FROM @sqlstr; EXECUTE stmt1; END;