SQLで指定月のカレンダー作成

SQLServerでストアドプロシージャ (stored procedure) を使って指定月の月初から月末までの日を取得する必要があったので作成しました。

スポンサーリンク

ストアドプロシージャでカレンダーを作成する

SQLServerでストアドプロシージャ (stored procedure) を使って指定月の月初から月末までの日を取得する必要があったので作成しました。

カレンダー作成ストアドプロシージャ

作成したストアドプロシージャ (stored procedure) は以下の通りです。

CREATE Procedure [dbo].[指定月のカレンダー]
(
@YearMonth as varchar(6)
)
AS
Declare @from datetime
Declare @to datetime
Declare @nowDate datetime
Declare @workDate table([makeDate] [datetime]);

— 指定の年月の1日をfromに
Set @from = cast( @YearMonth + ’01’ as datetime )

— 指定の年月の翌月から1日引いた日(月末)を@toに
Set @to = dateadd( day, -1, dateadd( month, 1, @from ))

SELECT @nowDate = @from
WHILE ( @nowDate >= @from and @nowDate <= @to ) BEGIN INSERT INTO @workDate VALUES ( @nowDate ) SELECT @nowDate = dateadd( day, 1, @nowDate ) END SELECT CONVERT( VARCHAR, makeDate, 112 ) AS days from @workDate order by makeDate [/sql] ストアドプロシージャ (stored procedure) の呼び出しは以下の通りです。 [text] exec 指定月のカレンダー @YearMonth='201301' [/text]

カレンダー作成ストアドプロシージャ実行結果

実行結果は

    20130101
    20130102
    20130103
    20130104
    20130105
    20130106
    20130107
    20130108
    20130109
    20130110
    20130111
    20130112
    20130113
    20130114
    20130115
    20130116
    20130117
    20130118
    20130119
    20130120
    20130121
    20130122
    20130123
    20130124
    20130125
    20130126
    20130127
    20130128
    20130129
    20130130
    20130131

ちなみに2月でも

    exec 指定月のカレンダー @YearMonth='201302'
    20130201
    20130202
    20130203
    20130204
    20130205
    20130206
    20130207
    20130208
    20130209
    20130210
    20130211
    20130212
    20130213
    20130214
    20130215
    20130216
    20130217
    20130218
    20130219
    20130220
    20130221
    20130222
    20130223
    20130224
    20130225
    20130226
    20130227
    20130228

で大丈夫です。

タイトルとURLをコピーしました