2013-09-25 104 views
0

在MySQL中,是否可以將日期設置爲列名。
我正在考慮創建一個包含最後3週數據的表格,其中所有三週的列名將是該周的第一個日期。
所以如果currante日期是25-09-2013,那麼我的表格應該有3列,列名爲:
11-09-2013,28-09-2013和25-09-2013。在MySQL中,是否可以將日期設置爲列名稱

+0

如果你還解釋了爲什麼你想要這樣做,這將幫助我們更好地形象化情況。 – mavrosxristoforos

+0

請解釋您正在嘗試解決的_問題,而不是要求解決方案的幫助。 –

回答

2

當然,爲什麼不:

 
mysql> select 'foo' as `2013-09-25`; 
+------------+ 
| 2013-09-25 | 
+------------+ 
| foo  | 
+------------+ 
1 row in set (0.00 sec) 

- 只是記住反引號。

但是,實際上,如果你想產生一些不是好主意的動態列 - 你最好使用應用程序。

1

它可能是可能,但我會說這是一個可怕的,非規範化的,不可持續的腦死亡設計。我建議重新考慮它,對你的要求一無所知。

+0

已經是我的查詢越來越大了。我的表格有3列日期,管理員,msu和我比較最近3周的msu。選擇它們作爲 選擇ADMIN1,WEEK1,WEEK2,WEEK3,(((WEEK3-WEEK2)/ WEEK2)* 100)作爲percentage_change,(WEEK3-WEEK2)作爲MSU_Difference from ....所有我想要打印日期以代替WEEK1,WEEK2,WEEK3。 – user2761031

+0

您可以使用一對多關係輕鬆完成此操作:兩個表之間的外鍵和JOIN。 – duffymo

0

這樣做的理由是什麼?

如果只是爲了讓數據看起來更具可讀性,那麼可以通過運行將數據格式化爲所需佈局的報表來實現。

只需在每個條目上存儲數據和日期標記,然後在報告中的3周塊中檢索它。

即時創建表會給您的處理增加不必要的開銷,並使其他進程的備份,複製和檢索複雜化。

0

你想在顯示層做到這一點。

選擇列,

if(date=curdate() - interval 1 day, result, null) as today_minus_1, 
if(date=curdate() - interval 2 day, result, null) as today_minus_2, 
if(date=curdate() - interval 2 day, result, null) as today_minus_3, 

之後,當你顯示,將其重命名。之前我做過類似的事情來比較廣告系列的效果,但是在創建數據表時列名命名爲日期。

相關問題