SQL Tips

 

[SQL Server] 月末の日付(月末日)を求めたい / EOMONTH関数 / 月末日を取得

[SQL Server] 月末の日付(月末日)を求めたい / EOMONTH関数 / 月末日を取得

月末の日付を求めたい時がたまにあると思うが、
普通は下記のように作成するとできる。

日付変数のデータ型が文字列の場合、
DECLARE @StartDate char(10)
SET @StartDate = '2012/02/03'

SELECT DATEADD(MM, 1, LEFT(@StartDate,7)+'/01')-1 AS Result1
-- もしくは
SELECT DATEADD(DD, -1, DATEADD(MM, 1, LEFT(@StartDate,7)+'/01')) AS Result2

実行結果


日付変数のデータ型がdatetimeの場合、
DECLARE @StartDate datetime
SET @StartDate = '2012/02/03'

SELECT DATEADD(MM, 1, CONVERT(CHAR(7),@StartDate,111)+'/01')-1 AS Result1
-- もしくは
SELECT DATEADD(DD, -1, DATEADD(MM, 1, CONVERT(CHAR(7),@StartDate,111)+'/01')) AS Result2

実行結果


上記のように使っても問題はないが、
SQL SERVER 2012からはもっと簡単にできる関数が登場した。

EOMONTH関数だ。
では、使い方を説明する。

DECLARE @StartDate_char char(10)
DECLARE @StartDate_datetime datetime
SET @StartDate_char = '2012/02/03'
SET @StartDate_datetime = CONVERT(datetime, @StartDate_char)

--CHAR型データ
SELECT EOMONTH(@StartDate_char) AS Result1_1

--DATETIME型データ
SELECT EOMONTH(@StartDate_datetime) AS Result2_1

実行結果


またEOMONTH関数に引数で指定月から何カ月後の月末日を求めることができる。
例えば、2012/02/03の2ヶ月後、つまり4月の末日を求めるには下記のように作成する。

SELECT EOMONTH('2012/02/03', 2) AS Result1_2

実行結果


このエントリーをはてなブックマークに追加
2014-11-23 15:25:45   12111

コメント

[SQL Server] Transact-SQLを使ってSQL Server ユーザーを作成する方法

-.日付:2015-01-16   カテゴリ : -   閲覧数:1438

[SQL Server] SET IDENTITY_INSERT で IDENTITY を設定した列に値を登録する方法

-.日付:2014-11-30   カテゴリ : -   閲覧数:3242

[SQL Server] 月末の日付(月末日)を求めたい / EOMONTH関数 / 月末日を取得

-.日付:2014-11-23   カテゴリ : -   閲覧数:12111

[SQL Server] LIKEを利用して検索する時パフォーマンスに注意事項

-.日付:2014-11-22   カテゴリ : -   閲覧数:4801

[SQL Server] IPアドレスを数字に変更する方法

-.日付:2014-10-26   カテゴリ : -   閲覧数:1702

[SQL Server] GeoIPを利用してIPアドレスの国情報を取得する方法

-.日付:2014-10-25   カテゴリ : -   閲覧数:6155

Copyright © 2015 INNOYA.COM All rights reserved. RSS