T-SQL: EOMONTH で月初と月末の日付を取得する方法
EOMONTH を利用して、月初と月末の日付を取得する
以前 「 前月の 1 日と末日を取得する方法 」 で、DATETIME のデフォルト値を利用して、前月の 1 日と末日の日付を取得する方法をご紹介しました。
今回は SQL Server 2012 以降で使える EOMONTH を使って、指定した日付の月初と月末の日付を取得する方法をご紹介します。
EOMONTH 関数
EOMONTH 関数は、インプットとして渡した日付の月末の日付を返してくれる組み込み関数です (SQL Server 2012 以降)。
EOMONTH 関数の構文は次の通りです。
EOMONTH ( start_date [, month_to_add ] )
start_date には入力の日付を渡します。 month_to_add はオプショナルで追加したい月数を指定することができます。 整数で指定し、マイナスも指定可能です。
EOMONTH 関数を使って月初と月末の日付を取得する
EOMONTH 関数を使って、前月、当月、翌月の月初と月末の日付を取得するクエリーは次の通りです。
DECLARE @InputDate DATETIME = '2018-01-10'; SELECT DATEADD(dd, 1, EOMONTH (@InputDate , -2)) AS 前月月初日, EOMONTH(@InputDate, -1) AS 前月末日, DATEADD(dd, 1, EOMONTH (@InputDate , -1)) AS 当月月初日, EOMONTH(@InputDate) AS 当月末日, DATEADD(dd, 1, EOMONTH (@InputDate)) AS 翌月月初日, EOMONTH(@InputDate, 1) AS 翌月末日;
[ 実行結果 ]
月末日は EOMONTH 関数 をそのまま使って取得しています。
月初日は EOMONTH 関数に日付と -1 を引数として渡して、前の月の末日を取得して、それに DATEADD 1 日足すことで取得しています。
SQL Server 2012 以降でしか使えませんが、いろいろ工夫しなくてもいいので簡単ですね!