• 【MYSQL】按月创建未来n年表,如TEST202005、TEST202006


     按月创建未来2年表 【表TEST202005、TEST202006、...TEST202204】

    1、创建存储过程CREATE_TAB_BYMONTH【按年月循环创建表】

    DELIMITER ;;
    DROP PROCEDURE IF EXISTS CREATE_TAB_BYMONTH;
    CREATE  PROCEDURE CREATE_TAB_BYMONTH()
    BEGIN
        DECLARE MONTHNUM  INT;
        DECLARE CURNUM INT;
        DECLARE YYMM INT;
        DECLARE TABLENAME VARCHAR(20);
        SET MONTHNUM=24;
        SET CURNUM=0;
       WHILE CURNUM<MONTHNUM DO
         SET YYMM= PERIOD_ADD(DATE_FORMAT(NOW(),'%Y%m'),CURNUM);
           SET TABLENAME=CONCAT('TEST',YYMM );
           IF NOT EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=TABLENAME) THEN
             ##创建表
             CALL CREATE_TABLE(TABLENAME);
           END IF;
         SET CURNUM=CURNUM+1;
       END WHILE;
    END;;
    DELIMITER ;

    2、创建存储过程CREATE_TABLE【新建表】

    DELIMITER ;;
    DROP PROCEDURE IF EXISTS CREATE_TABLE;
    CREATE PROCEDURE CREATE_TABLE(TABLENAME VARCHAR(32))
    BEGIN
    DECLARE STR VARCHAR(4000);
    SET STR=CONCAT('CREATE TABLE ',TABLENAME,
    ' (
    ID            BIGINT(20) NOT NULL DEFAULT 0 ,
    TASK_ID       BIGINT(20) NOT NULL DEFAULT 0 ,
    NAME          VARCHAR(64) NOT NULL DEFAULT ''''
    )ENGINE=INNODB DEFAULT CHARSET=UTF8;');
    SET @SQL=STR;
    PREPARE SL FROM @SQL;
    EXECUTE SL;
    DEALLOCATE PREPARE SL;
    END;;

    3、执行存储过程CREATE_TAB_BYMONTH【创建表TEST202005、TEST202006、...TEST202204】

    CALL CREATE_TAB_BYMONTH();
  • 相关阅读:
    使用ParseExact方法将字符串转换为日期格式
    Windows 备用数据流(ADS)的妙用___转载
    ms17_010利用复现(32位)
    将手机号设置为空号
    PowerShell批量创建文件夹
    让程序显示运行时间
    使用Sleep方法延迟时间
    使用TimeSpan对象获取时间间隔
    DateTime小综合
    DDMS介绍
  • 原文地址:https://www.cnblogs.com/kiko2014551511/p/12911679.html
Copyright © 2020-2023  润新知