DateDiff 関数

適用先
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

2 つの日付間の時間間隔の数を指定する バリアント型 (Long) の値を返します。

構文

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

DateDiff関数には、次の引数があります。

引数 説明
interval 必ず指定します。 date1date2の差を計算するために使用する時間間隔を表す文字列式。
date1, date2 必須。 Variant (Date)。 計算で使用する 2 つの日付。
firstdayofweek 省略可能です。 週の最初の日を指定する定数。 指定しない場合、日曜日が想定されます。
firstweekofyear 省略可能。 年の第 1 週を指定する定数です。 指定しない場合、最初の週は 1 月 1 日が発生する週です。

設定

interval引数には、次の設定があります。

設定 説明
yyyy
q 四半期
m
y 年間通算日
d
w 平日
ww
h
n
s

firstdayofweek引数には、次の設定があります。

定数 説明
vbUseSystem 0 NLS API 設定を使用します。
vbSunday 1 日曜日 (既定)
vbMonday 2 月曜日
vbTuesday 3 火曜日
vbWednesday 4 水曜日
vbThursday 5 木曜日
vbFriday 6 金曜日
vbSaturday 7 土曜日
定数 説明
vbUseSystem 0 NLS API 設定を使用します。
vbFirstJan1 1 1 月 1 日が発生する週から始まります (既定値)。
vbFirstFourDays 2 新しい年に少なくとも 4 日を含む最初の週から始まります。
vbFirstFullWeek 3 年の最初の完全な週から始まります。

解説

DateDiff関数を使用して、2 つの日付の間に指定された時間間隔の数を決定できます。 たとえば、 DateDiff を使用して、2 つの日付の日数、または今日から年末までの週数を計算できます。

date1からdate2までの日数を計算するには、年の日 ("y") または日 ("d") を使用します。 intervalが Weekday ("w") の場合、DateDiffは 2 つの日付の間の週数を返します。 date1が月曜日に当たる場合、DateDiffdate2まで月曜日の数をカウントします。 date2カウントされますが、date1はカウントされません。 ただし、 interval が Week ("ww") の場合、 DateDiff 関数は 2 つの日付の間の予定表の週数を返します。 date1からdate2までの日曜日の数をカウントします。 DateDiff は、日曜日に当たる場合は date2 カウントされますが、日曜日に当たる場合でも、 date1はカウントされません。

date1date2よりも後の時点を参照する場合、DateDiff関数は負の数値を返します。

firstdayofweek引数は、"w""ww"間隔記号を使用する計算に影響します。

date1またはdate2が日付リテラルの場合、指定した年はその日付の永続的な部分になります。 ただし、 date1 または date2 が二重引用符 (" ") で囲まれており、年を省略すると、 date1 または date2 式が評価されるたびに、現在の年がコードに挿入されます。 これにより、さまざまな年に使用できるコードを記述できます。

12 月 31 日と翌年の 1 月 1 日を比較すると、年 ("yyyy") のDateDiffは、1 日しか経過していなくても 1 を返します。

date1date2の場合、Calendar プロパティの設定がグレゴリオ暦の場合、指定された日付はグレゴリオ暦である必要があります。 カレンダーがイスラム暦の場合は、イスラム暦で日付を指定する必要があります。

DateDiff クエリの例

Expression 結果
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; 日付 01/01/2010DateofSale フィールドの値の差を年単位で返します。
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; システム日付と DateofSaleの差を暦年に基づいて四半期単位で返し、 DaysSinceSale 列に表示します。
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; システム日付と DateofSaleの差を日数で返し、 DaysSinceSale 列に表示します。
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; システム日付と DateofSaleの差を日数で返し、 DaysSinceSale 列に表示します。
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; システム日付と DateofSaleの差を平日単位で返し、 DaysSinceSale 列に表示します。 DateofSaleが月曜日に当たる場合、DateDiffはシステム日付までの月曜日の数をカウントします。 システム日付はカウントされますが、 DateofSale 値はカウントされません。
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; システム日付と DateofSaleの差を暦週単位で返し、 DaysSinceSale 列に表示します。 DateofSaleからシステム日付までの日曜日の数をカウントします。 日曜日に当たる場合はシステム日付をカウントしますが、日曜日に当たる場合でも、 DateofSaleはカウントされません。
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; システム日付と DateTimeの差を時間単位で返し、 DaysSinceSale 列に表示します。
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; システム日付と DateTimeの差を分単位で返し、 DaysSinceSale 列に表示します。
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; システム日付と DateTimeの差を秒単位で返し、 DaysSinceSale 列に表示します。

式で DateDiff 関数を使用する

DateDiff関数は、式を使用できる任意の場所で使用できます。 たとえば、顧客注文のフルフィルメントに使用するフォームがあるとします。 Orders テーブルには、顧客が注文を受け取るために必要な日付を含む ReceiveBefore という名前のフィールドがあります。 フォームのテキスト ボックスと共に DateDiff 関数を使用すると、注文が出荷されるまでの残りの日数を表示できます。

注文の発送に 10 日かかると仮定して、テキスト ボックスの [コントロール ソース ] プロパティを次のように設定します。

=DateDiff("d", Now(), [Orders].[ReceiveBefore])-10

フォーム ビューでフォームを開くと、注文が出荷されるまでの日数がテキスト ボックスに表示されます。 顧客が注文を受け取る必要が残り 10 日未満の場合、テキスト ボックスの数値は負になります。 すぐに発送した場合に注文が遅れる日数を示します。

VBA コードで DateDiff 関数を使う

この例では、 DateDiff 関数を使用して、特定の日付から今日までの日数を表示します。

Dim TheDate As Date  ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg

関連項目

適切な日付関数を選択する