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

日付の差分を取得する方法

スポンサーリンク

T-SQL で日付の差を計算してその差分を取得するには DATEDIFF 関数を使用します。

  1. 日付の差分を日数で取得する方法(日の差分を計算)
  2. 日付の差分を月数で取得する方法(月の差分を計算)
  3. 日付の差分を年数で取得する方法(年の差分を計算)


日付の差分を日数で取得する方法(日の差分を計算)

日付の差分を日数で取得する際の書式は次の通りです。この書式では日付FROMから日付TOの日数を数字で返します。

tsql(書式)
1
DATEDIFF(DAY, 日付FROM, 日付TO) 

実行可能なサンプルコードは次の通りです。

tsql(実行可能なサンプルコード)
1
2
3
4
5
6
7
SELECT
  DATEDIFF(DAY, '2015/11/01', '2015/11/02'), --  1
  DATEDIFF(DAY, '2015/11/01', '2015/11/30'), -- 29
  DATEDIFF(DAY, '2015/11/01', '2015/12/01'), -- 30
  DATEDIFF(DAY, '2015/11/01', '2015/11/01'), --  0  --同じ日付の場合は0
  DATEDIFF(DAY, '2015/11/01', '2015/10/31'), -- -1  --過去に遡る場合はマイナス
  DATEDIFF(DAY, '2015/11/01', '2015/10/01')  -- -31 --過去に遡る場合はマイナス 

日付の差分を月数で取得する方法(月の差分を計算)

日付の差分を月数で取得する際の書式は次の通りです。この書式では日付FROMから日付TOの月数を数字で返します。

tsql(書式)
1
DATEDIFF(MONTH, 日付FROM, 日付TO) 

この月数の計算では、日付FROMと日付TOの日の部分は無視されます。例えば 2015/11/30 と 2015/12/01 は日数で考えると 1 日の差ですが、月の部分が 11 から 12 へ 1 増えているので、差分は 1 ヶ月と計算されます。

実際のサンプルコードは次の通りです。

tsql(実行可能なサンプルコード)
1
2
3
4
5
6
7
SELECT
  DATEDIFF(MONTH, '2015/11/30', '2015/12/01'), --  1 :1日でも月の部分が変わっていれば1
  DATEDIFF(MONTH, '2015/11/01', '2015/12/31'), --  1
  DATEDIFF(MONTH, '2015/11/01', '2016/01/15'), --  2
  DATEDIFF(MONTH, '2015/11/01', '2015/11/30'), --  0 :同じ月の場合は0
  DATEDIFF(MONTH, '2015/11/01', '2015/10/31'), -- -1 :過去に遡る場合はマイナス
  DATEDIFF(MONTH, '2015/11/01', '2014/11/01')  -- -12:過去に遡る場合はマイナス 

日付の差分を年数で取得する方法(年の差分を計算)

日付の差分を年数で取得する際の書式は次の通りです。この書式では日付FROMから日付TOの年数を数字で返します。

tsql(書式)
1
DATEDIFF(MONTH, 日付FROM, 日付TO) 

この年数の計算では、日付FROMと日付TOの月と日の部分は無視されます。例えば 2015/12/31 と 2016/01/01 は日数で考えると 1 日の差ですが、年の部分が 2015 から 2016 へ 1 増えているので、差分は 1 年と計算されます。

実際のサンプルコードは次の通りです。

tsql(実行可能なサンプルコード)
1
2
3
4
5
6
7
SELECT
  DATEDIFF(YEAR, '2015/12/31', '2016/01/01'), --  1 :1日でも年の部分が変わっていれば1
  DATEDIFF(YEAR, '2015/01/01', '2016/12/31'), --  1
  DATEDIFF(YEAR, '2015/11/01', '2017/05/15'), --  2
  DATEDIFF(YEAR, '2015/01/01', '2015/12/31'), --  0 :同じ年の場合は0
  DATEDIFF(YEAR, '2015/01/01', '2014/12/31'), -- -1 :過去に遡る場合はマイナス
  DATEDIFF(YEAR, '2015/11/01', '2000/01/01')  -- -15:過去に遡る場合はマイナス 
スポンサーリンク