DateDiff 函數

套用到
Microsoft 365 Access Access 2024 Access 2021 Access 2019 Access 2016

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

語法

DateDiff (interval, date1, date2 [, firstdayofweek] [, first weekofofyear] )

DateDiff 函數語法包含以下參數:

引數 描述
interval 必要。 字串表達式,就是你用來計算 date1date2 差異的時間區間。
約會1約會2 必要。 變體 (日期) 。 計算時要用兩個日期。
週第一天 可省略。 一個固定的恆定,標示著一週的第一天。 若未特別說明,則假設是星期日。
學年第一週 可省略。 一個標示新年第一週的常數。 若未特別說明,第一週則假設為1月1日的那一週。

設定

區間論證具有以下設定:

設定 描述
yyyy
q
m 月份
y 一年的星期幾
d 日期
w Weekday
ww
h
n 分鐘
s

「第一天」論證的設定如下:

常數 描述
vbUseSystem 0 使用 NLS API 設定。
vb星期日 1 星期天 (預設)
VB星期一 2 星期一
vb星期二 3 星期二
vb星期三 4 星期三
vb星期四 5 星期四
vb星期五 6 星期五
vb星期六 7 星期六
常數 描述
vbUseSystem 0 使用 NLS API 設定。
vbFirst1月1日 1 從1月1日 (預設) 的那週開始。
vb第一四天 2 從新年至少有四天的第一週開始。
vb第一週完整週 3 從今年第一個完整週開始。

註解

你可以使用 DateDiff 函數來判斷兩個日期之間存在多少個指定的時間區間。 例如,你可以用 DateDiff 來計算兩個日期之間的天數,或是今天和年底之間的週數。

要計算 日期1日期2之間的天數,您可以使用年份的日期 (“y”) 或日期 (“d”) 。 當區間為 Weekday (“w”) ,DateDiff 會回傳兩個日期之間的週數。 如果 日期1 落在星期一, DateDiff 會計算到 日期2之前的星期一數量。 它會計算 日期2 ,但不計算 日期1。 然而,如果 區間 是週 (「ww」) , 則 DateDiff 函數會回傳兩個日期之間的日曆週數。 它會計算 date1date2 之間的星期日數量。 DateDiff 若落在星期日,則計入 date2;但即使日期1落在星期天,也不算入。

如果 date1 指的是比 date2 晚的時間點, DateDiff 函數會回傳負數值。

Firstdayofweek 論證影響使用「w」和「ww」區間符號的計算。

如果 日期1日期2 是字面日期,指定的年份將成為該日期的永久部分。 然而,如果 date1date2 以雙引號 (“ ”) 包圍,且省略年份,每次評估 date1date2 表達式時,代碼中會插入當前年份。 這使得可以撰寫可用於不同年份的程式碼。

當將12月31日與緊接著一年的1月1日比較時,年份 (“yyyy”) 的 DateDiff 會回傳1,儘管實際上只過了一天。

注意

對於 date1date2,如果 Calendar 屬性設定是格里曆,則所提供的日期必須是格里曆。 如果曆法是伊斯蘭曆,則所提供的日期必須是伊斯蘭曆。

DateDiff 查詢範例

運算式 結果
選擇日期差異 (“yyyy”,#01/01/2010#,[DateofSale]) 作為 Expr1 來自 ProductSales; 回傳日期2與日期1的差額 (將日期1視為最舊,日期2為最新) 視為「年份」的數量。 結果:「DateofSale」欄位與日期「01/01/2010」作為「Years」數量的差異。
選擇日期差異 (“q”,[銷售日期],日期 () ) AS 銷售後的天數 來自 ProductSales; 回傳系統日期與「銷售日期」之間的差額,以「季度」數量 (,基於日曆年份) ,並顯示在「DaysSinceSale」欄位。 會將系統日期與「DateofSale」之間的差值回傳為「Months」數,並在「DaysSinceSale」欄位顯示。
選擇日期差異 (“y”,[銷售日期],日期 () ) AS 銷售後的天數 來自 ProductSales; 回傳系統日期與「DateofSale」之間的差值,作為「Days」數,並在「DaysSinceSale」欄位顯示。
選擇日期差異 (“d”、[銷售日期],日期 () ) 如銷售天數 來自 ProductSales; 回傳系統日期與「DateofSale」之間的差值,作為「Days」數,並在「DaysSinceSale」欄位顯示。
選擇日期差異 (“w”,[銷售日期],日期 () ) 與銷售天數相同 來自 ProductSales; 回傳系統日期與「DateofSale」之間的差額,顯示為「平日」數量,並顯示在「DaysSinceSale」欄位。 如果「銷售日期」落在星期一,DateDiff 會計算到系統日期為止的星期一數量。 它會計算系統日期,但不會計算「DateofSale」中的價值。
選擇日期差異 (“ww”,[銷售日期],日期 () ) AS 銷售日數 來自 ProductSales; 回傳系統日期與「DateofSale」之間的差值,顯示為「日曆週數」,並顯示在「DaysSinceSale」欄位。 它會計算「銷售日期」到「系統日期」之間的星期日數量。 若系統日期落在星期日,則會計算系統日期;但即使「銷售日期」落在星期日,也不算入。
選擇日期差異 (“h”,[DateTime],日期 () ) AS DaysSinceSale 來自 ProductSales; 回傳系統日期與「DateTime」之間的差值,顯示為「Hours」數,並顯示在「DaysSinceSale」欄位。
選擇日期差異 (“n”,[DateTime],日期 () ) AS DaysSinceSale 來自 ProductSales; 回傳系統日期與「DateTime」之間的差值,顯示為「分鐘數」,並顯示在「DaysSinceSale」欄位。
選擇日期差異 (“s”,[DateTime],日期 () ) 作為 DaysSinceSale 來自 ProductSales; 回傳系統日期與「DateTime」之間的差值,顯示為「秒數」,並顯示在「DaysSinceSale」欄位。

在表達式中使用 DateDiff 函式

你可以在任何能使用表達式的地方使用 DateDiff 函數。 舉例來說,假設你有一個用來履行客戶訂單的表單。 在訂單表中,有一個名為 ReceiveBefore 的欄位,裡面包含客戶需要收到訂單的日期。 你可以用 DateDiff 功能,在表單上的文字框顯示訂單還剩多少天數。

假設任何訂單出貨需要十天,你可以將文字框的 控制來源 屬性設定如下:

=DateDiff (“d”,現在 () ,[階數]。[接收前]) -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

另請參閱

選擇合適的約會功能