场景
SpringBoot+Mybatis实现代码获取建表语句并实现动态建表:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/126161849
在上面进行动态创建表的基础上,数据库中会每天生成一个表形如下面
那么在代码中怎样获取所有的表名,并且能根据时间区间查询这段时间之内的表名。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
1、查询Mysql中所有表名的sql
SELECT table_name FROM information_schema.TABLES WHERE table_schema = (select database())
其中获取所有表的名称
SELECT table_name FROM information_schema.TABLES
要从特定数据库中获取表的名称
SELECT table_name FROM information_schema.TABLES WHERE table_schema = ''
获取当前数据库名
select database()
2、现在我们需要的是根据自动生成的带时间字符串的表名查询指定范围内的数据
比如我们只要bus_badao_record20220804和bus_badao_record20220805这两个表名。
可以借助于Between And语句。
如果比较的字段是时间格式的字符串则可以自动能筛选出对应范围内的数据。
为了验证,新建一个测试表
其中date字段是varchar类型的,然后要筛选出20220804到20220805区间范围的数据,可以这样写
SELECT date from badao where date between '20220804' and '20220805'
不仅如此,如果给每个数据都添加一个同样的前缀,照样能实现筛选效果
SELECT date from badao where date between 'badao20220804' and 'badao20220805'
所以上面的筛选指定范围内的表名可以这样写
SELECT table_name FROM information_schema.TABLES WHERE table_schema = (select database()) AND table_name BETWEEN 'bus_badao_record20220804' AND 'bus_badao_record20220805'