2014-07-23 147 views
0

我想创建一个包含两列的表,其中一列应该是日期在2013年7月21日至今天之间的日期。使用sql server 2008r2并保留系统日期类型一样。使用存储过程创建表

请有人指导我,因为我需要尽快做到这一点。

+0

在你的循环使用'DATEADD()'方法添加天* GETDATE()*和存储此你的表中的值 – schlonzo

+0

这不能回答我的问题......所以当我插入到列中时,我应该使用(a,dateadd())声明任何变量,如@start? – user3782929

回答

0

像这样的东西应该工作

DECLARE @currentDate datetime = Convert(datetime, '2013/07/21', 111) 

WHILE @currentdate < getdate() 
BEGIN 
    INSERT INTO <your_table> 
    (<your_date_column>) 
    VALUES 
    (@currentDate) 

    SET @currentDate = dateadd(dd, 1, @currentDate) 
END 
GO 
+0

非常感谢。 – user3782929

0

试试这个:

IF OBJECT_ID('TABLE_CREATION') IS NOT NULL 
DROP PROCEDURE TABLE_CREATION 
GO 

CREATE PROCEDURE TABLE_CREATION 
AS 
DECLARE @StartDate date; 
DECLARE @i bigint; 

SET @StartDate = '2001/01/01' 
SET @i=1; 

EXECUTE(' 
     if object_id(''table_name'') is not null 
     drop table table_name 

     create table table_name (column1_name date, column2_name varchar(max)) 
     WHILE @StartDate < getdate() 
     BEGIN 
      insert into table_name (column1_name, column2_name) VALUES (@StartDate,@i) 
      SET @[email protected]+1; 
      SET @currentDate = dateadd(dd, 1, @currentDate) 
     END 
') 

GO 

EXEC TABLE_CREATION 
+0

列日期是具有今天的开始日期和结束日期的日期范围。 – user3782929

+0

我编辑了查询。希望它现在可以帮助你。 –

+0

当您复制我的代码时,您应该用您的* @ startDate *变量名称替换所有* @ currentDate *变量名称;-) – schlonzo