我正在尝试创建一个存储过程,该过程将每天动态添加具有今天日期的列。这样做的原因是因为每天我都会收到一个新文件,其中包含每个项目的新计数。他们希望白天保持历史总数。这是我认为我能做到这一点的唯一方法,除非你们其中一个人对这种模式设计有建议。谢谢。
答案 0 :(得分:1)
以下是您的查询:
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);
现在仔细聆听:
D
。这是因为
20160920
是INVALID
列名称。你必须开始一个专栏
带字母(例如An3,a33 ......)112
样式,其日期为yyyymmdd
,你
不能使用11
,111
,10
和其他一些风格,因为它会给出日期
使用-
mm-dd-yyyy
,INVALID
列名称。-
。您
无法在列名中使用yyyymmdd
。Here is more style
,请尝试
使用yymmdd
,{{1}} style