首页 > 解决方案 > 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”。

谢谢!

标签: sql-servertsqltablename

解决方案


使用表名本身来存储一些临时信息并不是最佳实践。最好只维护一个报告表,然后为报告的日期添加一个时间戳/日期时间列(以及某种主键)。

然后,如果您想选择与今天的报告有关的所有记录,您可以使用:

SELECT *
FROM ReportTable
WHERE dt = GETDATE();  -- or something similar to this

推荐阅读