大家好,
我的TALBE名稱需要用TEST+當年當月如今天是112年09月
我的TALBE名稱是TEST11209
下個月我的TALBE名稱是TEST11210
SELECT * FROM TEST_+ SUBSTRING(convert(varchar,DATEADD(MONTH,0,getdate()),112),1,6) - 191100
出現錯誤訊息如下
訊息 102,層級 15,狀態 1,行 3
接近 '+' 之處的語法不正確。
請問應怎麼改才正確?
DECLARE @YearMonth NVARCHAR(6);
SET @YearMonth = FORMAT(GETDATE(), 'yyMM');
DECLARE @TableName NVARCHAR(50);
SET @TableName = 'TEST' + @YearMonth;
DECLARE @SqlQuery NVARCHAR(MAX);
SET @SqlQuery = 'SELECT * FROM ' + QUOTENAME(@TableName);
EXEC sp_executesql @SqlQuery;
試試~
declare @TableName varchar(11) = FORMAT(dateadd(year,-1911,Convert(date,getdate())), N'TESTyyyMM')
declare @TableNameNext varchar(11) = FORMAT(dateadd(year,-1911,dateadd(m,1,Convert(date,getdate()))), N'TESTyyyMM')
declare @Sql varchar(max) = 'select * from ' + @TableNameNext
--這個月
print @TableName
--下個月
print @TableNameNext
--SQL字串組合
print @Sql
IF EXISTS( SELECT * FROM sys.tables WHERE name = @TableNameNext )
begin
exec sp_executesql @Sql
end
else
begin
print '表格不存在'
end
--TEST11212
--TEST11301
--select * from TEST11212