mysql (5.1) ›создать таблицу с именем из переменной

Я пытаюсь создать таблицу с именем, основанным на текущем году и месяце (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.


person Jakob Jingleheimer    schedule 20.09.2011    source источник
comment
Идентификаторы - это не переменные. Переменные не являются идентификаторами. Это требует использования динамического SQL - он неприятен для всех баз данных, с которыми я работал.   -  person    schedule 20.09.2011


Ответы (1)


У вас должно получиться что-то вроде этого:

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;
person nos    schedule 20.09.2011