日付同士の間隔を取得するDateDiff関数

日付

DateDiff関数

DateDiff関数は、引数で指定した時間間隔で2つ日付の間隔を得る関数です。
戻り値はバリアント型ですが、ほとんどの場合数値で受けることができます。

日数だけでなく、何カ月、何年、何週間などの単位を指定できるのが特徴です。

構文

構文は以下の通りです。[]内は省略可能です。

DateDiff(interval, date1, date2 [,firstdayofweek] [,firstweekofyear])

interval
 時間間隔を指定文字列で指定します。

  指定文字列    意 味  
yyyy年
q四半期
m月
y年間通算
d日
w平日
ww週
h時間
n分
s秒

date1(最初の日)
date2(最後の日)
 計算対象とする2つの日付を指定します。

firstdayofweek
 週の始まりとする曜日を定数で指定できます。省略した場合は日曜日がセットされます。

  定 数   値    意 味   
vbSunday1日曜日(既定値)
vbMonday2月曜日
vbTuesday3火曜日
vbWednesday4水曜日
vbThursday5木曜日
vbFriday6金曜日
vbSaturday7土曜日

firstweekofyear
 年の始まりとなる基準を指定します。

   定 数    値 説 明
vbFirstJan111月1日が含まれる週から開始する(省略時)
vbFirstFourDays24日以上含まれる最初の週を年の第1週目とする
vbFirstFullWeek31週間全体が含まれる最初の週をその年の第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よりも早い日が来ます。
引き算の式とは異なります。

タイトルとURLをコピーしました