基于开始和结束日期插入多行到SQL Server(Insert multiple rows into

2019-10-17 09:23发布

我需要几行插入基于SQL Server数据库的Start DateEnd Date文本框。

EG 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来实现这一目标?

Answer 1:

由于总是有几种方法。 这里是其中的一些:

  1. 你可以写在你的应用程序代码,通过天循环并插入每天一条记录。 (通常最坏设计)

  2. 你可以调用一些SQL脚本,做这一切在数据库中。

  3. 您可以在存储过程中包裹你的SQL脚本,并通过在开始和结束日期,并获得存储过程来为你做它。

  4. 您可以交叉连接到一个预先存在理货表并用它来生成你的记录。

如果您可以提供

的SQL Server版本-the您使用

- 什么表看起来像

- 不论你使用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),并且在两个日期指标的影响传递的日期。



Answer 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;


文章来源: Insert multiple rows into SQL Server based on start and end dates