sql-server - SQL Server:如何始终查询名称中包含当前日期的表
问题描述
我在一个数据库上,该数据库总是创建一个名为Table_Name_YYYYMMDD
.
我想创建一个使用子查询的查询,例如:
Select convert(varchar, getdate(), 112)
可以让我始终从名称中包含当前日期的表中获取结果。
用户对数据库具有只读访问权限。
我确实尝试了以下方法:
Declare @Tname varchar(50);
Set @Tname = 'table_name_' + (Select convert(varchar, getdate(), 112));
Declare @Q varchar(200);
Set @Q = 'Select * From ' + @Tname;
Exec @Q;
但我得到一个错误:
必须声明标量变量“@Q”。
谢谢!
解决方案
使用表名本身来存储一些临时信息并不是最佳实践。最好只维护一个报告表,然后为报告的日期添加一个时间戳/日期时间列(以及某种主键)。
然后,如果您想选择与今天的报告有关的所有记录,您可以使用:
SELECT *
FROM ReportTable
WHERE dt = GETDATE(); -- or something similar to this
推荐阅读
- c# - Azure 监控 REST API -(请求的名称有效,但未找到请求类型的数据。)
- python - 递归计算列表中的列表
- java - 如何在 Apache Camel 路由中再次读取跳过的文件?
- c# - 如何查询线程中的任务
- swift - Swift Firestore - 对文档 ID 进行编码,使其不会在 Firebase 中显示为单独的字段
- php - Laravel:为什么 Eloquent 显示隐藏字段?
- cypress - 从页面中获取文本,然后根据 API 调用对其进行验证
- teradata - 从 teradata 导出的 sql 文件开始时添加的垃圾值
- numpy - 使用 numpy 在二维数组中查找模式
- postgresql - 将本地 docker 卷挂载到 kubernetes pod