我可以选择一些信息吗?表名是concat操作的结果



我必须从昨天的表存档中选择一些数据。它以以下格式存档:APIOperatorLog_YYYY_MM_DD。但我必须将这个选择添加到脚本中,这样名字就必须自动更改。为此,我使用了CONCAT运算符:

SELECT CONCAT("APIOperatorLog_" , DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), "%Y_%m_%d"));

这就是输出:

APIOperatorLog_2022_08_18

它运行得很好。现在,我必须使用该输出,而不是表名,喜欢,不是:

SELECT * FROM APIOperatorLog_2022_08_18;

相反,由于日期每天都在变化,我想这样做:

SET @tbl_name = CONCAT("APIOperatorLog_" , DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), "%Y_%m_%d"));
SELECT COUNT(*) FROM @tbl_name;

但这不起作用,所以我也尝试了这个:

SET @tbl_name = CONCAT("APIOperatorLog_" , DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), "%Y_%m_%d"));
SET @SQLQuery = 'SELECT count(*) from ' + @tbl_name;
EXEC @SQLQuery;

但这也不起作用,有什么建议吗?

谢谢你,如果有人需要,我就是这么做的:

SET @tbl = CONCAT('APIOperatorLog_' , DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y_%m_%d')); 
SET @SQLQuery = CONCAT('SELECT count(*) from ' , @tbl, ' WHERE hour(datetime) BETWEEN 9 AND 21 AND requestType = 'RECHARGE''); 
prepare stmt from @SQLQuery; 
execute stmt;

最新更新