Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

會傳回 Variant (Long),指定兩個指定日期之間的時間間隔數目。

語法

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

DateDiff 函數語法具有下列自變數:

引數

描述

interval

必要。 字串表達式是用來計算 date1date2之間的時間間隔。

date1date2

必要。 Variant (Date) 。 這是要用於計算的兩個日期。

firstdayofweek

選擇性。 指定一周中第一天的 常數 。 如果未指定,則會假設星期日為假設。

firstweekofyear

選擇性。 這是指定一年中第一周的常數。 如果未指定,則假設第一周為 1 月 1 日所在的周。

設定

間隔 引數 有下列設定:

設定

描述

yyyy

q

m

月份

y

一年中的一天

d

日期

w

Weekday

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

從在新的一年至少有四天的第一周開始。

vbFirstFullWeek

3

從一年的第一個整周開始。

註解

您可以使用 DateDiff 函數來判斷兩個日期之間有多少指定的時間間隔。 例如,您可以使用 DateDiff 來計算兩個日期之間的天數,或是今天到年末之間的周數。

若要計算 date1date2 之間的天數,您可以使用年份的日 (“y”) 或 Day (“d”) 。 當 interval 為 Weekday (“w”) 時, DateDiff 會 傳回兩個日期之間的周數。 如果 date1 落在星期一, DateDiff 會 計算星期一到 date2 的數目。 它會計算 date2 ,但不計算 date1。 不過,如果 interval 為 Week (“ww” ) ,DateDiff 函數會傳回兩個日期之間的行事歷周數。 它會計算 date1date2 之間的星期日數目。 DateDiff 會計算 日期2 是否落在星期日;但不計算 date1,即使它落在星期日。

如果 date1 參照比 date2 晚的時間點, DateDiff 函數會傳回負數。

firstdayofweek 自變數會影響使用 “w” 和 “ww” 間隔符號的計算。

如果 date1date2 是 日期文字,指定的年份會變成該日期的永久部分。 不過,如果 date1date2 以雙引弧括住 (“ ”) ,而您省略年份,則每次評估 date1date2 表達式時,都會將目前的年份插入程式代碼中。 這可讓您撰寫可用於不同年份的程序代碼。

比較緊接後一年的 12 月 31 日到 1 月 1 日時,年份的 DateDiff (“yyyy”) 傳回 1,即使只有一天已經過。

附註:  針對 date1date2,如果 [ 行事曆 ] 屬性設定為 [公曆],則所提供的日期必須是公曆。 如果行事曆是回歷,則所提供的日期必須是回歷。

DateDiff 查詢範例

Expression

結果​​

SELECT DateDiff (“yyyy”,#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales;

傳回 Date2 和 Date1 (將 Date1 視為最舊,而 Date2 視為「年份」的最新) 。 結果:欄位 “DateofSale” 中的值與日期 “01/01/2010” 之間的差異為 'Year'。

SELECT DateDiff (“q”,[DateofSale],Date () ) AS DaysSinceSale FROM ProductSales;

根據行事歷年份) ,傳回系統日期與 「DateofSale」 之間的差異為「季」 (數,並顯示在 「DaysSinceSale」 欄中。 傳回系統日期與 「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 函數。 例如,假設您有用來履行客戶訂單的窗體。 在 [訂單] 數據表中,您有一個名為 ReceiveBefore 的欄位,其中包含客戶接收訂單所需的日期。 您可以使用 DateDiff 函數搭配表單上的文字框,顯示訂單必須出貨之前的剩餘天數。

假設運送任何訂單需要十天,您會將文本框的 [ 控件來源 ] 屬性設為:

=DateDiff (“d”, Now () , [Orders]。[ReceiveBefore]) -10

當您在 [表單檢視] 中開啟表單時,文字框會顯示訂單必須出貨之前的剩餘天數。 如果客戶需要收到訂單的剩餘時間不到 10 天,文字框中的數位會是負數,並指出如果訂單立即出貨,訂單的延遲天數。

VBA 範例

在 VBA 程序代碼中使用 DateDiff 函數    

此範例使用 DateDiff 函數來顯示指定日期與今天之間的天數。

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

另請參閱

選擇正確的日期函數

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。