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#) | 4 | 2つの日付は同じ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#) | 1 | 1週間を単純に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としたときと同じく、日曜日を指定したものとみなされます。
週初日の曜日 | 指定される曜日 |
---|---|
0 | NLS APIの設定を使用 |
1 | 日曜日 |
2 | 月曜日 |
3 | 火曜日 |
4 | 水曜日 |
5 | 木曜日 |
6 | 金曜日 |
7 | 土曜日 |
また、年の初週は、どのような週をその年の最初の週とするかを指定する値です。意味は以下の表のようになります。
省略した場合は1としたときと同じく、1月1日が属する週を指定したものとみなされます。
年の初週 | 指定される週 |
---|---|
0 | NLS APIの設定を使用 |
1 | 1月1日が属する週 |
2 | 4つ以上の曜日を含む(長さが4日以上である)最初の週 |
3 | 7つすべての曜日を含む(長さが7日である)最初の週 |
備考
ExcelのDATEDIF関数と微妙に名前が異なります。
Excelでは簡単に満年齢を算出できますが、Accessの場合は第1引数として「yyyy」を指定しても上記のように「年」の差しか求められませんので数え年の算出しかできません。満年齢の算出についてはこちらをご覧ください。