动态添加包含今天日期的列

Dynamically add column with today's date

我正在尝试创建一个存储过程,它将每天动态添加一个包含今天日期的列。这样做的原因是因为每天我都会收到一个新文件,其中包含每个项目的新计数。他们希望每天保持 运行 历史总数。这是我认为我可以做到这一点的唯一方法,除非你们中的一个人对此模式设计有建议。谢谢。

这是您的查询:

IF EXISTS (select * from dbo.sysobjects where id = object_id(N'[usp_AddCollumByDate]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE usp_AddCollumByDate
GO

create procedure usp_AddCollumByDate
as
begin
    declare @sql varchar(max);
    declare @toDay varchar(20)=CONVERT(varchar(10),GETDATE(),112);
    set @sql = 'ALTER TABLE MyTable ADD  D' +  @toDay + ' varchar(max); '
    print @sql
    EXECUTE(@sql);
end

exec usp_AddCollumByDate

它将每天添加列(对于今天的示例,它添加):

ALTER TABLE MyTable ADD  D20160920 varchar(max); 

现在仔细听:

  1. 我在今天的日期前面加了一个字母D。这是因为 20160920 是一个 INVALID 列名。你必须开始一个专栏 带字母(例如 An3、a33...)
  2. 我使用了样式 112 将日期指定为 yyyymmdd,你 不能使用 1111110 和其他一些样式,因为它给出了日期 - 类似于 mm-dd-yyyy,它是一个 INVALID 列名。你 不能在列名中使用 -.Here is more style ,尝试 使用 yyyymmdd,yymmdd 风格