月末日を取得する
SQL Server Advent Calendar 17日目 です。
今日は、月末日(月の最終日)を取得します。
よくあるのは、翌月1日の日付型から、-1日するやり方でしょうか。
DATEADD (Transact-SQL)
declare @today datetime = getdate() select dateadd(day, -1, convert(datetime, left(convert(char, dateadd(month, 1, @today), 112), 6) + '01', 112) ) -- 2013/12/31 00:00:00.000
翌月1日を求めるために、色々面倒な事をしています。
SQL Server 2012 以降を使っている場合は、もっと楽に変換可能です。
EOMONTH (Transact-SQL)
declare @today datetime = getdate() select eomonth(@today) -- 2013/12/31
EOMONTH は、省略可能な第二パラメータで月の加減算が行えます。
select eomonth(getdate(), -1) -- 2013/11/30 select eomonth(getdate()) -- 2013/12/31 select eomonth(getdate(), 1) -- 2014/01/31