我正在使用mariadb,我必须选择一个表。表名是每年每个月创建的。所以你可以在DDBB上找到table_202301,table_202302,......等等。
所以根据我想获取数据的日期,我必须查询一个表或另一个表,假设我必须获取昨天的数据,我使用:
SELECT CONCAT('table', DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), '%Y'), DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), '%m'));
我得到了表名:table202301
所以这很好用!但是当我想从这个表中获取所有行时,使用:
SELECT * FROM dbname.CONCAT('table', DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), '%Y'), DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), '%m'));
我得到了sintax错误(1064)。我也一直在尝试连接dbname并使用逗号分隔数据库,但我得到了相同的错误信息。你能帮我吗?
1条答案
按热度按时间fykwrbwg1#
最后我得到了这个问题的答案。所以必须使用动态SQL。
Dynamic table name based on date