Nヶ月後、Nヶ月前の日付を計算する方法
スポンサーリンク
Nヶ月後 の日付を計算する。
Nヶ月後の日付を計算する場合、 DATEADD 関数を使用します。
tsql(書式) | |
1 | DATEADD(month, N, 日付) |
例えば、2015年10月15日の3ヶ月後を計算する場合、以下のように指定します。
tsql(実行可能なサンプルコード) | |
1 2 3 4 5 | --以下はいずれも 2016-01-15 00:00:00.000 が返されます。 SELECT DATEADD(month, 3, '20151015'), DATEADD(month, 3, '2015/10/15'), DATEADD(month, 3, '2015-10-15') |
Nヶ月前 の日付を計算する。
Nヶ月前の日付を計算する場合、 DATEADD 関数の第二引数にマイナスの数字を指定します。
tsql(書式) | |
1 2 | --Nにマイナスを指定する。 DATEADD(month, N, 日付) |
例えば、2015年10月15日の11ヶ月前を計算する場合、以下のように指定します。
tsql(実行可能なサンプルコード) | |
1 2 3 4 5 | --以下はいずれも 2014-11-15 00:00:00.000 が返されます。 SELECT DATEADD(month, -11, '20151015'), DATEADD(month, -11, '2015/10/15'), DATEADD(month, -11, '2015-10-15') |
月末日の場合(日数が多い月から、日数が少ない月を計算した場合)
日数が多い月の月末日からNヶ月後(Nヶ月前)を計算して日数が少ない月になった場合は、Nヶ月後(Nヶ月前)の月末日が返されます。
例えば3月31日の1ヶ月後は、4月30日になります。3月31日の1ヶ月前は、2月のうるう日を考慮した上で月末日が返されます。
実際に実行した結果は以下の通りです。
tsql(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 | SELECT --以下は 2015-04-30 00:00:00.000 を返します DATEADD(month, 1, '2015/3/31'), --以下は 2015-02-28 00:00:00.000 を返します DATEADD(month, -1, '2015/3/31'), --以下は 2016-02-29 00:00:00.000 を返します DATEADD(month, -1, '2016/3/31') |
月末日の場合(日数が少ない月から、日数が多い月を計算した場合)
日数が少ない月の月末日からNヶ月後(Nヶ月前)を計算して日数が多い月になった場合は、日の部分は変わりません。
例えば、4月30日の1ヶ月後は5月30日になり、4月30日の1ヶ月前は3月30日になります。
tsql(実行可能なサンプルコード) | |
1 2 3 4 5 | SELECT --以下は 2015-05-30 00:00:00.000 を返します DATEADD(month, 1, '2015/4/30'), --以下は 2015-03-30 00:00:00.000 を返します DATEADD(month, -1, '2015/4/30') |
スポンサーリンク