16

現在の年と月 ( ) に基づく名前のテーブルを作成しようとして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ます。

4

2 に答える 2

35

次のようなことができるはずです。

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;
于 2011-09-20T17:33:04.743 に答える
8
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;
于 2011-09-20T17:33:41.200 に答える