|
分類:[データベース全般]
SQL Server2005にて、
開始日、終了日、間隔を指定して、以下のような結果を得たいと思っています。
開始日:2010/1/10 終了日:2010/1/13 間隔:1日ごと
Data_from Date_to
2010/1/10 0:00:00 2010/1/10 23:59:59
2010/1/11 0:00:00 2010/1/11 23:59:59
2010/1/12 0:00:00 2010/1/12 23:59:59
開始日や終了日、間隔を任意に指定できるようにしようと、
以下のストアドを書いたのですが、うまく動いてくれません。
WHILE内のUNION ALL句があると、
「キーワード 'UNION' 付近に不適切な構文があります。」と言われてしまいます。
CREATE PROCEDURE [dbo].[XXXX]
@Set_Date_from datetime
,@Set_Date_to datetime
,@Set_datepart nvarchar(10)
,@Set_num int
AS
DECLARE
@Date_from as datetime
,@Date_to as datetime
BEGIN
set @Date_from = @Set_Date_from
--最初の1行目
SET @Date_to =
case @Set_datepart
WHEN 'dd' THEN Dateadd(dd , @Set_num, @Date_from)
WHEN 'mm' THEN Dateadd(mm , @Set_num, @Date_from)
WHEN 'yy' THEN Dateadd(yy , @Set_num, @Date_from)
ELSE Dateadd(dd , @Set_num, @Date_from)
END
SELECT
@Date_from AS Date_from ,
Dateadd(ss,-1,@Date_to) AS Date_To
--2行目以降
WHILE @Date_to < @Set_Date_to
BEGIN
--fromの取得
SET @Date_from = @Date_to
--toの取得
SET @Date_to =
CASE @Set_datepart
WHEN 'dd' THEN Dateadd(dd , @Set_num, @Date_from)
WHEN 'mm' THEN Dateadd(mm , @Set_num, @Date_from)
WHEN 'yy' THEN Dateadd(yy , @Set_num, @Date_from)
ELSE Dateadd(dd , @Set_num, @Date_from)
END
-- UNION ALL --これがあるとエラーが出る。
SELECT
@Date_from AS Date_from ,
Dateadd(ss,-1,@Date_to) AS Date_To
END
END
期待する結果を得るにはどのようにすれば良いでしょうか。
もしくはもっと良い方法があるようならアドバイス頂ければ幸いです。
どうかよろしくお願いします。
|