月末の日付を計算する方法
スポンサーリンク
SQL Server 2008 R2 の場合、月末の日付を計算する関数は用意されていない為、以下の方法で計算する必要があります。
- 対象の日付の翌月1日を計算する。
- その日から1日差し引く。
月末日を計算するサンプル SQL
tsql(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | --テーブル変数(@MY_DATE)を宣言 DECLARE @MY_DATE TABLE( MY_DATETIME DATETIME ); -- テスト用の日付データーを挿入 INSERT INTO @MY_DATE VALUES --2015/01 ~ 2015/12 ('2015/01/15'), ('2015/02/15'), ('2015/03/15'), ('2015/04/15'), ('2015/05/15'), ('2015/06/15'), ('2015/07/15'), ('2015/08/15'), ('2015/09/15'), ('2015/10/15'), ('2015/11/15'), ('2015/12/15'), --2016,2017,2018 の2月(うるう日の確認用) ('2016/02/15'), ('2017/02/15'), ('2018/02/15'); --月末日の計算 SELECT MY_DATETIME --対象の日付の翌月1日を計算した後、1日戻る。 , DATEADD(DAY, -1, LEFT(CONVERT(VARCHAR, DATEADD(MONTH, 1, MY_DATETIME), 112), 6) + '01' ) FROM @MY_DATE |
前月月末、翌月月末、当月月末を取得するサンプル SQL
tsql(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | --前月月末 SELECT DATEADD(DAY, -1, LEFT(CONVERT(VARCHAR, GETDATE(), 112), 6)+'01' ); --当月月末 SELECT DATEADD(DAY, -1, LEFT(CONVERT(VARCHAR, DATEADD(MONTH, 1, GETDATE()), 112), 6)+'01' ); --翌月月末 SELECT DATEADD(DAY, -1, LEFT(CONVERT(VARCHAR, DATEADD(MONTH, 2, GETDATE()), 112), 6)+'01' ); |
スポンサーリンク