1. 程式人生 > >【Mysql】用儲存過程來實現從指定日期到指定日期的批量建表吧~

【Mysql】用儲存過程來實現從指定日期到指定日期的批量建表吧~

DROP PROCEDURE IF EXISTS `copyTableByDate`;

CREATE DEFINER=`root`@`localhost` PROCEDURE `copyTableByDate`(
		 IN `table_` varchar(64),
		 IN `format_` varchar(32),
		 IN `begin_` date,
		 IN `end_` date)
BEGIN
	
	DECLARE currentDate date DEFAULT NOW();
	DECLARE endDate date DEFAULT NOW();
	
	DECLARE suffix_ VARCHAR(32);
	DECLARE tableName VARCHAR(128) DEFAULT "defaultTableName_";
	
	SET currentDate = DATE_FORMAT(begin_,'%Y%m%d');
	SET endDate = DATE_FORMAT(end_,'%Y%m%d');
	
	WHILE currentDate < endDate DO
		SET suffix_ = DATE_FORMAT(currentDate, format_);
		SET tableName = CONCAT(table_,suffix_);
		
		SET @stmtSql = CONCAT("CREATE TABLE IF NOT EXISTS ",tableName,"(LIKE ",table_,");");
		PREPARE stmt FROM @stmtSql;
		EXECUTE stmt;
		DEALLOCATE PREPARE stmt;

		SET currentDate = DATE_ADD(currentDate,INTERVAL 1 DAY);
	END WHILE;

	
END;

#copyTableByDate(複製的表的名字,複製的新表字尾格式,起始日期,結束日期)
CALL copyTableByDate('StatResouce','_%Y%m%d',20121101,20121103);

#用完刪除
DROP PROCEDURE IF EXISTS `copyTableByDate`;