在sql startdate和enddate中插入一系列日期

时间:2012-07-04 06:07:51

标签: sql date between

我一直在研究一个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 "

它什么也没做,所以我不确定自己是否走在正确的轨道上。

1 个答案:

答案 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