DateDiff関数
DateDiff関数は、引数で指定した時間間隔で2つ日付の間隔を得る関数です。
戻り値はバリアント型ですが、ほとんどの場合数値で受けることができます。
日数だけでなく、何カ月、何年、何週間などの単位を指定できるのが特徴です。
構文
構文は以下の通りです。[]内は省略可能です。
DateDiff(interval, date1, date2 [,firstdayofweek] [,firstweekofyear])
interval
時間間隔を指定文字列で指定します。
| 指定文字列 | 意 味 |
|---|---|
| yyyy | 年 |
| q | 四半期 |
| m | 月 |
| y | 年間通算 |
| d | 日 |
| w | 平日 |
| ww | 週 |
| h | 時間 |
| n | 分 |
| s | 秒 |
date1(最初の日)
date2(最後の日)
計算対象とする2つの日付を指定します。
firstdayofweek
週の始まりとする曜日を定数で指定できます。省略した場合は日曜日がセットされます。
| 定 数 | 値 | 意 味 |
|---|---|---|
| vbSunday | 1 | 日曜日(既定値) |
| vbMonday | 2 | 月曜日 |
| vbTuesday | 3 | 火曜日 |
| vbWednesday | 4 | 水曜日 |
| vbThursday | 5 | 木曜日 |
| vbFriday | 6 | 金曜日 |
| vbSaturday | 7 | 土曜日 |
firstweekofyear
年の始まりとなる基準を指定します。
| 定 数 | 値 | 説 明 |
|---|---|---|
| vbFirstJan1 | 1 | 1月1日が含まれる週から開始する(省略時) |
| vbFirstFourDays | 2 | 4日以上含まれる最初の週を年の第1週目とする |
| vbFirstFullWeek | 3 | 1週間全体が含まれる最初の週をその年の第1週目とする |
サンプルコード
関数の使い方のサンプルです。
その年の日数を得る
Sub test_DateDiff()
Dim sDay As Date, eDay As Date
sDay = DateSerial(Year(Date), 1, 1)
eDay = DateSerial(Year(Date) + 1, 1, 1)
MsgBox "今年は、" & DateDiff("d", sDay, eDay) & "日。"
End Sub
※1月1日から翌年の1月1日を指定しないと正しい値になりません。
生まれてから今日まで
Sub test_DateDiff2()
Dim myBirthday As Date
myBirthday = #11/28/2008#
Debug.Print "生まれてから" & DateDiff("d", myBirthday, Date) & "日。"
Debug.Print DateDiff("yyyy", myBirthday, Date) & "歳。"
End Sub
結果は、生まれてからの日数と年齢を出力します。
date1,date2の順番に注意しましょう。
通常は、date1の方が、date2よりも早い日が来ます。
引き算の式とは異なります。








