前言
在写触发器或者写查询语句的时候,我们可能会遇到动态表的情况。比如,我们根据日期建立了31张表,如果我们需要根据系统时间查询对应日期的表,要怎么做?
实现
1.获取当天日期
SELECT DATE_FORMAT(NOW(), '%d') AS today
可以看到我们可以通过DATE_FORMAT(NOW(), '%d')
来得到当天日期。
2.实现代码
通过CONCAT
拼接SQL语句,通过PREPARE
预编译语句,通过EXECUTE
执行语句,通过DEALLOCATE
删除预编译资源。
SET @historyTable = CONCAT('data_',DATE_FORMAT(NOW(), '%d'));
SET @aa = CONCAT('SELECT * FROM ',@historyTable);
PREPARE stmt FROM @aa;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;