我有一些表中有日期。
如何根据日期查询它们。有多个表使用prefix_date格式。
我的意思是如果表的名称是foo,今天的日期是2016 06 09.我需要访问的表格是foo_2016_06_09
。
我需要每天在前一天运行此查询。这可能吗?如果是的话怎么样?
答案 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');