sql-server - 在 Azure 中创建一个表,并将当前日期附加到表名称中

标签 sql-server azure azure-sql-database procedure

我知道这是一种糟糕的做法,但这就是我被要求的。此程序大约每月执行一次,但情况可能会发生变化。我需要新表名称的格式为 staff.20150818,即 staff.yyyymmdd。当我运行程序时,表名称是 @currentDate 而不是我需要的名称。在 SQL Azure 中,我无法使用 PREPARE,这是我找到的许多解决方案中的一个因素。这是我一直在编写的代码:

BEGIN
DECLARE @currentDate varchar(500);
SET @currentDate = 'staff.' +(CONVERT(VARCHAR(8),GETDATE(),3));

 CREATE TABLE [dbo].[@currentDate] (
 [staffID] int identity(1,1) primary key,
 [firstName] nvarchar(35),
 [lastName] nvarchar(35),
 [positionTitle] nvarchar(45),
 [leaID] nvarchar(15),
 [schoolID] nvarchar(15),
 [phoneNumber] nvarchar(24),
 [email] nvarchar(128),
 [username] nvarchar(20),
 [password] nvarchar(max),
 [code1] nvarchar(5),
 [code2] nvarchar(5),
 [date_created] datetime2(7),
 [date_updated] datetime2(7)
) INSERT INTO [@currentDate](firstName, lastName, positionTitle, leaID, schoolID, phoneNumber, email, username, password, code1, code2)
  SELECT firstName, lastName, positionTitle, leaID, schoolID, phoneNumber, email, username, password, code1, code2
  FROM Staff

END

最佳答案

你只需要使用动态SQL,将你的SQL语句连接成一个字符串,包括将日期时间转换为varchar,然后调用EXEC或sp_executeSql就可以了。

您不能将表名作为变量传递给 sp_executeSql;您需要已经在 @sql 字符串中解决了该问题。

关于sql-server - 在 Azure 中创建一个表,并将当前日期附加到表名称中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32079532/

相关文章:

azure - 如何将我的 Azure bizspark 订阅转让给其他人

sql-server - SQL Server WHERE 子句中的与号 (&) 运算符

c# - 表值参数的排序顺序是否保证保持不变?

asp.net - Owin/Katana 应用程序中的进程身份

azure - 使用 Terraform 从 Azure 上的应用程序服务的出站 IP 进行 MySQL 防火墙规则

azure - 使用 Enterprise Library 5 登录到 SQL Azure 可以从开发计算机工作,但不能从 Web 角色工作

SQL 按列名的第二个字母排序

sql - 月粮改为日粮

sql - 将数据从本地 SQL 移动到 SQL Azure

Azure ARM 故障转移组数据库属性不接受变量数组