我一直在研究一个SQL语句,我可以在其中选择开始日期和结束日期,并将所有日期添加到表中。此开始和结束日期附有ID。例如,我选择1/1/2012和4/1/2012,id为1 结果应如下
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 :(得分: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
)