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よりも早い日が来ます。
引き算の式とは異なります。