DateDiff関数

 2つの日付時刻の差を表す数値を返します。差の基準となる単位(年,月,日など)を指定できます。

使用例

表記例出力例説明
DateDiff("yyyy",#2015/01/01#,#2015/12/31#)0単位として年(yyyy)を指定した例です。2つの日付は同じ年に属していますので差は0となります
DateDiff("yyyy",#2014/12/31#,#2015/01/01#)1日付は1日しか違いませんが、2つの日付は異なる年に属していますので差は1となります
DateDiff("yyyy",#2015/01/01#,#2010/01/01#)-5最初の日付時刻が2番目の日付時刻より前である場合、戻り値は0以下になります
DateDiff("q",#2015/03/31#,#2015/04/01#)1四半期を比較する例です。日付は1日しか違いませんが、1-3月四半期と4-6月四半期をまたいでいますので、その差は1となります
DateDiff("q",#2015/03/31#,#2016/03/01#)42つの日付は同じ1-3月の四半期に属していますが、そもそも年が1年異なりますので、四半期に基づく差は4となります
DateDiff("m",#2016/03/31#,#2016/08/15#)5月を比較する例です。2つの日付の間隔は「丸4か月」には足りませんが、月を比較すると4つ進んでいますのでその差は4となります
DateDiff("w",#2015/04/01#,#2015/04/14#)11週間を単純に7日として週を比較する例です。2つの日付の間隔は13日であり、1週間(7日)には達していますが2週間(14日)には足りませんのでその差は1となります
DateDiff("ww",#2015/04/01#,#2015/04/14#)2日曜から始まる1週間を基準として(第4引数を省略)週を比較する例です。このとき、2015/03/29から2015/04/04が1つの週、2015/04/05から2015/04/11が次の週、2015/04/12から2015/04/18がさらに次の週とみなされますので、2つの日付は2週違いとみなされます
DateDiff("ww",#2015/04/01#,#2015/04/14#,4,3)1水曜から始まる1週間を基準として(第4引数=4)週を比較する例です。2015/04/01は水曜日ですので2015/04/01から2015/04/08までが1つの週、そして2015/04/09から2015/04/15までが次の週とみなされますので、2つの日付は1週違いとみなされます。第5引数はその年の第1週をどこにするかを定めるためのものですが、この例の結果には影響していません
DateDiff("y",#2015/01/01#,#2015/12/31#)364日を単位として比較する例です。2つの日付の間で364日経過していますのでその差は364となります。365日以上の差についても問題なく算出されます
DateDiff("d",#2015/01/01#,#2015/12/31#)364これも日を単位として比較する例です。第1引数を「y」とした場合と同じ結果となります
DateDiff("h",#2015/04/01 12:00:00#,#2015/04/01 13:02:03#)1時を比較する例です
DateDiff("n",#2015/04/01 12:00:00#,#2015/04/01 13:02:03#)62分を比較する例です
DateDiff("s",#2015/04/01 12:00:00#,#2015/04/01 13:02:03#)3723秒を比較する例です

書式

DateDiff(基準単位,日付時刻1,日付時刻2[,週初日の曜日,年の初週])

 基準単位として指定できる値は次の通りです。

基準単位意味
yyyy
q四半期(1月から3月、4月から6月、7月から9月、10月から12月の4区分)
m
w週日(7日の差を1週とみなす)
ww週(特定の曜日を週の区切りとみなす)
y年間通算日(事実上「日」と同一)
d日(事実上「年間通算日」と同一)
h
n
s

 週初日の曜日及び年の初週は、日付がその年の何週目であるかを求める場合に影響します。
 このうち週初日の曜日は、週が何曜日から始まるのかを指定する値です。意味は以下の表のようになります。
 省略した場合は1としたときと同じく、日曜日を指定したものとみなされます。

週初日の曜日指定される曜日
0NLS APIの設定を使用
1日曜日
2月曜日
3火曜日
4水曜日
5木曜日
6金曜日
7土曜日

 また、年の初週は、どのような週をその年の最初の週とするかを指定する値です。意味は以下の表のようになります。
 省略した場合は1としたときと同じく、1月1日が属する週を指定したものとみなされます。

年の初週指定される週
0NLS APIの設定を使用
11月1日が属する週
24つ以上の曜日を含む(長さが4日以上である)最初の週
37つすべての曜日を含む(長さが7日である)最初の週

備考

 ExcelのDATEDIF関数と微妙に名前が異なります。
 Excelでは簡単に満年齢を算出できますが、Accessの場合は第1引数として「yyyy」を指定しても上記のように「年」の差しか求められませんので数え年の算出しかできません。満年齢の算出についてはこちらをご覧ください。