分かりやすく、使いやすく。

月末の日付を計算する方法

スポンサーリンク

SQL Server 2008 R2 の場合、月末の日付を計算する関数は用意されていない為、以下の方法で計算する必要があります。

  1. 対象の日付の翌月1日を計算する。
  2. その日から1日差し引く。
  1. 月末日を計算するサンプル SQL
  2. 前月月末、翌月月末、当月月末を取得するサンプル SQL


月末日を計算するサンプル 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'
  ); 
スポンサーリンク