根据开始日期和结束日期将多行插入SQL Server

时间:2012-11-04 22:29:39

标签: asp.net sql-server tsql

我需要根据Start DateEnd Date文本框将多行插入SQL Server数据库。

E.G。 tbStartDate.Text = "25/12/2012"tbEndDate.Text = "29/12/2012"因此我需要为以下日期插入单独的行:

25/12/2012
26/12/2012
27/12/2012
28/12/2012
29/12/2012

请帮助我使用必要的T-SQL来实现这一目标吗?

2 个答案:

答案 0 :(得分:2)

Declare @Startdate datetime
Select @Startdate='20121025'
While @Startdate<='20121029'
    begin
      if not exists(select * from dummy where DATE=@Startdate)
        insert into dummy (date) values (@Startdate)
        set @Startdate=@Startdate + 1
    end;

答案 1 :(得分:2)

一如既往,有几种方法。以下是其中一些:

  1. 您可以在应用中编写循环播放日期并每天插入一条记录的代码。 (通常是最糟糕的设计)

  2. 您可以调用一些SQL脚本在数据库中完成所有操作。

  3. 您可以将SQL脚本包装在存储过程中,并传入开始日期和结束日期,并让存储过程为您完成。

  4. 您可以交叉加入现有的计数表并使用它来生成记录。

  5. 如果可以提供

    - 您正在使用的SQL Server版本

    - 表格看起来像什么

    - 您是否正在使用C#或VB

    然后我们可以进一步提供帮助,因为将日期传递到数据库可能很困难。如果您不验证它们可能会特别困难。

    无论如何,这里有选项3。

    CREATE PROC dbo.t_test 
    @StartDate DATETIME,
    @EndDate DATETIME
    AS
    
    WHILE @StartDate <= @EndDate
    BEGIN
        INSERT INTO YourTable(YourDateField) VALUES (@StartDate)
        SET @StartDate = DATEADD(d,1,@StartDate)
    END
    

    然后你需要从ASP.Net调用这个存储过程(称为dbo.t_test)并将你的两个日期参数作为日期传递。