基于日期的动态表名称

时间:2016-06-09 05:23:31

标签: mysql sql

我有一些表中有日期。

如何根据日期查询它们。有多个表使用prefix_date格式。

我的意思是如果表的名称是foo,今天的日期是2016 06 09.我需要访问的表格是foo_2016_06_09

我需要每天在前一天运行此查询。这可能吗?如果是的话怎么样?

1 个答案:

答案 0 :(得分: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');