2011-06-03 15 views
1

我想添加一列到MySQL中的現有表中,name =執行添加的那一天。我想這在數據庫內發生的(即沒有PHP,Python和Perl腳本。) 我嘗試這樣做:在MySQL中添加名稱爲CURDATE()的列?

SET @tmp_date = CURDATE(); 
ALTER TABLE my_report ADD @tmp_date INT(6); 

但是查詢失敗,錯誤#1064 - 你在你的SQL語法錯誤; 這不是日期的格式,因爲@tmp_date將返回2011-06-03和

ALTER TABLE my_report ADD `2011-06-03` INT(6); 

執行OK

回答

1
set @query = concat("ALTER TABLE my_report ADD `", curdate(), "` INT(6)"); 
prepare stmt from @query; 
execute stmt; 
2

加上`(backstick)周圍的列名:

SET @tmp_date = CURDATE(); 
ALTER TABLE my_report ADD `@tmp_date` INT(6); 

但是這種糟糕的設計氣味?爲什麼要創建新列而不使用其他表或類似結構?

+1

+1爲「壞設計的氣味」。 @ivanv,你打算在這一欄填什麼數據? – 2011-06-03 11:46:54

+0

INT 我同意這是一個糟糕的設計決定。但由於沒有設計,這不是一個糟糕的設計:)。完成工作完全是一種解決方法 – munch 2011-06-03 13:00:30