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

日付

DateDiff関数

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

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

構文

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

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

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

  指定文字列    意 味  
yyyy
四半期
年間通算
平日
ww
時間

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

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

  定 数   値    意 味   
vbSunday日曜日(既定値)
vbMonday月曜日
vbTuesday火曜日
vbWednesday水曜日
vbThursday木曜日
vbFriday金曜日
vbSaturday土曜日

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

   定 数    値 説 明
vbFirstJan11月1日が含まれる週から開始する(省略時)
vbFirstFourDays4日以上含まれる最初の週を年の第1週目とする
vbFirstFullWeek1週間全体が含まれる最初の週をその年の第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をコピーしました