1

我需要在基于文本框Start Date的SQL Server 数据库中插入几行。End 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 来实现这一点吗?

4

2 回答 2

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;
于 2012-11-04T22:38:47.223 回答
2

一如既往,有几种方法。这里是其中的一些:

  1. 您可以在应用程序中编写代码,循环遍历这些天并每天插入一条记录。(一般是最差的设计)

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

  3. 您可以将 SQL 脚本包装在存储过程中,并传入开始和结束日期,然后让存储过程为您执行此操作。

  4. 您可以交叉连接到预先存在的计数表并使用它来生成记录。

如果你能提供

- 您正在使用的 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)并将两个日期参数作为日期传递。

于 2012-11-04T22:55:58.630 回答