我需要根据Start Date
和End 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来实现这一目标吗?
答案 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)
一如既往,有几种方法。以下是其中一些:
您可以在应用中编写循环播放日期并每天插入一条记录的代码。 (通常是最糟糕的设计)
您可以调用一些SQL脚本在数据库中完成所有操作。
您可以将SQL脚本包装在存储过程中,并传入开始日期和结束日期,并让存储过程为您完成。
您可以交叉加入现有的计数表并使用它来生成记录。
如果可以提供
- 您正在使用的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)并将你的两个日期参数作为日期传递。