mysql (5.1)> создать таблицу с именем из переменной - PullRequest
13 голосов
/ 20 сентября 2011

Я пытаюсь создать таблицу с именем на основе текущего года и месяца (2011-09), но MySQL, похоже, не нравится.

SET @yyyy_mm=Year(NOW())+'-'+Month(NOW());
CREATE TABLE `survey`.`@yyyy_mm` LIKE `survey`.`interim`;
SHOW TABLES IN `survey`;

+-----------+
| interim   |
+-----------+
| @yyyy_mm  |
+-----------+

Если я это сделаю CREATE TABLE; без отметок @yyyy_mm, я получаю общую синтаксическую ошибку.

@yyyy_mm разрешается в 2020.

Ответы [ 2 ]

30 голосов
/ 20 сентября 2011

Вы должны быть в состоянии сделать что-то вроде этого:

SET @yyyy_mm=DATE_FORMAT(now(),'%Y-%m');
SET @c = CONCAT('CREATE TABLE `survey`.`',@yyyy_mm, '` LIKE `survey`.`interim`');
PREPARE stmt from @c;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
7 голосов
/ 20 сентября 2011
set @yyyy_mm=concat(year(now()),'-',month(now()));
set @str = concat('create table survery.`', @yyyy_mm,'` like survey.interim;');
prepare stmt from @str;
execute stmt;
deallocate prepare stmt;
...