1

開始日と終了日を選択し、その間のすべての日付をテーブルに追加できる SQL ステートメントに取り組んでいます。この開始日と終了日には ID が付いています。たとえば、2012 年 1 月 1 日と 2012 年 4 月 1 日を選択し、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 "

何もしないので、正しい軌道に乗っているかどうかわかりません。

4

1 に答える 1

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

于 2012-07-04T06:23:31.667 に答える