2012-07-04 40 views
1

我一直在研究SQL语句,在其中可以选择开始日期和结束日期,并将所有日期添加到表中。这个开始和结束日期伴随着一个id。例如像我选择1/1/2012和2012/4/1和id为1 结果应该是如下将一系列日期插入到sql startdate和enddate中

reqId reqDate 
1  1/1/2012 
1  2/1/2012 
1  3/1/2012 
1  4/1/2012 

我的sql语句如下

"Insert into Request(reqId, reqDate) " & _ 
"Select @request, reqDate From Request where reqDate between @start and @end " 

它只是什么都不做,所以我不确定我是否在正确的轨道上。

+0

您的神奇弥补声明如何让您知道您希望每隔一段时间使用鼠她比每小时还是每周?另外,什么RDBMS? –

+0

我已经阅读了不同的方法给他们,但无济于事 –

回答

1

不知道你所使用的数据库系统,这里有一个用于SQL Server(2008或更高版本):

declare @Start date 
declare @end date 
declare @request int 

set @Start = '20120101' 
set @end = '20120104' 
set @request = 1 

;with Dates as (
    select @request as reqId,@Start as reqDate 
    union all 
    select reqId+1,DATEADD(day,1,reqDate) from Dates 
    where reqDate < @end 
) 
select * from Dates 

结果:

reqId  reqDate 
----------- ---------- 
1   2012-01-01 
2   2012-01-02 
3   2012-01-03 
4   2012-01-04 

(我原来说的2005或更高版本,然后意识到我正在使用date。对于2005年,请将date替换为datetime

+0

我实际上使用Visual Studio 2008. –

+0

Visual Studio不是一个数据库系统 - 但从它连接到数据库的大多数显而易见的方法将连接到SQL Server(Express或Compact) –

+0

对不起,我实际上是SQL编程中的noob。有没有其他的方法像使用While Loop?我试过并修改了你的代码,但无济于事。 –

相关问题