SQLで指定された年月日の月末日付を取得する

プログラミング SQL Server

SQLServerで指定された年月日の月末日付を取得するにはちょっとしたプログラムを作る必要があります。

スポンサーリンク

指定された年月日の月末日付を取得

SQLserverには指定された年月日の月末日付を取得する関数がないようなので、SQLで指定された年月日の月末日付を取得してみます。

SQLServer2012以降ではEOMONTH関数がサポートされました。

作成したストアドプロシジャー

作成したストアドプロシジャーです。

Declare @chk_date AS varchar(10) = ‘20120228’
Declare @chk_day AS int
Declare @last_day AS int

–日付として正しいかチェックする
IF ISDATE( @chk_date ) = 0
BEGIN
PRINT( ‘[‘ + CAST(@chk_date AS VARCHAR ) + ‘]は日付ではありません。’)
RETURN 1
END

–最大の年月はチェックするとオーバーフローするのでしない
IF CAST( @chk_date AS INT ) < '99991200' BEGIN --指定された年月日かあの日を取得する SELECT @chk_day = DAY( @chk_date ) --指定月の月末を取得する SELECT @last_day = DAY( CONVERT( DATETIME, CONVERT( CHAR(6), DATEADD( m, 1, @chk_date ), 112 ) + '01') - 1) --指定の日と取得した月末の日が違う IF @chk_day != @last_day BEGIN PRINT( '[' + CAST(@chk_date AS VARCHAR ) + ']は月末ではありません。' ) END --指定の日と取得した月末の日が同じ ELSE BEGIN PRINT( '[' + CAST(@chk_date AS VARCHAR ) + ']は月末です。' ) END END --最大の年月のチェック ELSE BEGIN --指定された年月日かあの日を取得する SELECT @chk_day = DAY( @chk_date ) IF @chk_day = 31 BEGIN PRINT( '[' + CAST(@chk_date AS VARCHAR ) + ']は月末です。' ) END ELSE BEGIN PRINT( '[' + CAST(@chk_date AS VARCHAR ) + ']は月末ではありません。' ) END END [/sql] 大体のエラーチェックもできるはずです。 @chk_dateの値を自由に設定して試してみてください。 これを関数化しておけば便利です。

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