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