DateDiff関数 …2つの日時の間隔を求める

[Access 2016/2013/2010/2007]

AccessのDateDiff関数の使い方を紹介します。

スポンサーリンク

書式

DateDiff(単位, 日時1, 日時2, 週の開始曜日, 年の第1週)

2つの日時の間隔を返します。間隔とは日時1日時2の間に指定した単位の「カウントの基準」(表A 参照)が何回あるかを表す数です。日時1と「カウントの基準」が一致する場合、日時1はカウントの対象になりません。

戻り値の型:バリアント型 (内部処理形式 Long の Variant)

引数

引数 指定 説明
単位 interval 必須 時間間隔の単位を 表A の文字列式で指定。「"」で囲んで指定すること
日時1 date1 必須 開始日時を指定
日時2 date2 必須 終了日時を指定。日時1以前の日時も指定可能
週の開始曜日 firstdayofweek 省略可 週の始まりの曜日を 表B の値で指定。引数単位に"ww"を指定したときの戻り値に影響する。省略した場合は、日曜日を週の始まりと見なす
年の第1週 firstweekofyear 省略可 年の第1週を 表C の値で指定。省略した場合は、1月1日を含む週を年の第1週と見なす

表A 引数 単位 の設定値

設定値 説明 カウントの基準
yyyy 1月1日
q 四半期 1月1日、4月1日、7月1日、10月1日
m 毎月1日
y 年間通算日 午前0時
d 午前0時
w 週日 日時1の曜日 (戻り値は週数)
ww 週の開始曜日
h 0分
n 0秒
s (戻り値は秒数)

※ DateDiff関数では、"y"と"d"は同じ結果を返します。

表B 引数 週の開始曜日 の設定値

定数 説明
0 vbUseSystem NLS API(国別の環境をサポートする仕組み)の設定値
1 vbSunday 日曜日(既定値)
2 vbMonday 月曜日
3 vbTuesday 火曜日
4 vbWednesday 水曜日
5 vbThursday 木曜日
6 vbFriday 金曜日
7 vbSaturday 土曜日

表C 引数 年の第1週 の設定値

定数 説明
0 vbUseSystem NLS API(国別の環境をサポートする仕組み)の設定値
1 vbFirstJan1 1月1日を含む週(既定値)
2 vbFirstFourDays 新しい年の少なくとも 4 日間を含む最初の週
3 vbFirstFullWeek 全体が新しい年に含まれる最初の週

使用例

使用例 戻り値 説明
DateDiff("yyyy",#2016/12/31#,#2017/01/02#) 1 「1月1日」が 1 回
DateDiff("yyyy", #2017/1/1#, #2017/12/1#) 0 「1月1日」が 0 回 (日時1である2017/1/1はカウントされない)
DateDiff("m", #2017/4/30#, #2017/8/3#) 4 「1日」が 4 回
DateDiff("m", #2017/5/1#, #2017/8/3#) 3 「1日」が 3 回(日時1である2017/5/1はカウントされない)
DateDiff("d", #2017/5/1#, #2017/5/7#) 6 「午前0時」が 6 回
DateDiff("d", #2017/5/7#, #2017/5/1#) -6 「午前0時」が 6 回
DateDiff("w",#2017/12/01#,#2017/12/31#) 4 日時1である2017/12/1の曜日(金曜日)」が 4 回
DateDiff("ww",#2017/12/01#,#2017/12/31#) 5 週の開始曜日(日曜日)」が 5 回
DateDiff("d", Null, #2017/5/1#)
DateDiff("d", #2017/5/1#, Null)
DateDiff("d", Null, Null)
Null 日時1または日時2がNull値の場合、戻り値はNull値

メモ

ExcelのDATEDIF関数との違い
ExcelのDATEDIF関数は、2つの日時の「満」の時間間隔を返します。したがって、ExcelではDATEDIF関数の引数に生年月日と現在の日付を指定すると、満年齢が求められます。 一方、AccessのDateDiff関数は、2つの日時の間にある「カウントの基準」をカウントします。したがって、AccessではDateDiff関数の引数に生年月日と現在の日付を指定しても、満年齢は計算できません。

実践例

以下のページを参照してください。

スポンサーリンク

関連記事