2016-06-09 95 views
1

我有一些表中有日期。基於日期的動態表名

如何根據日期查詢它們。有多個帶有prefix_date格式的表。

我的意思是如果表的名稱是foo,今天的日期是2016 06 09.我需要訪問的表將是foo_2016_06_09

我需要在日期前一天每天運行此查詢。這可能嗎?如果是的話如何?

+0

這種問題是有症狀的糟糕的設計。 – Strawberry

回答

1

DATE_FORMAT(NOW(),'%Y_%m_%d')將恢復爲2016_06_09,您可以連接在保持表的名稱部分,使用爲dynamic query

SET @table_name:='foo_'; 
SET @date_part:=DATE_FORMAT(NOW(),'%Y_%m_%d'); 

SET @sql:=CONCAT('SELECT * FROM ', @table_name, @date_part); 
PREPARE dynamic_statement FROM @sql; 
EXECUTE dynamic_statement; 
DEALLOCATE PREPARE dynamic_statement; 

前一天,用DATE_SUB

SET @date_part:=DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 DAY),'%Y_%m_%d'); 
+0

答案有幫助嗎?如果它不工作,請添加一些評論,然後我們可以添加/更新答案。 – Arulkumar

+1

非常感謝,這有點幫助 –