DateDiff 函數

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

回傳一個變 (Long) ,指定兩個日期之間的時間間隔數。

語法

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

DateDiff 數有以下參數:

引數 描述
interval 必要。 字串表達式,即你用來計算 與 date2之間差異date1的時間區間。
date1, date2 必要。 變體 (日期) 。 你想用來計算的兩個日期。
firstdayofweek 可省略。 一個固定的恆定,標示著一週的第一天。 如果你沒特別說明,那就假設是星期天。
firstweekofyear 可省略。 一個標示新年第一週的常數。 如果你沒特別說明,第一週就是1月1日的那一週。

設定

interval 論證的設定如下:

設定 描述
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") 或 ("d") 。 Wh interval is Weekday ("w") , DateDiff 回傳兩個日期之間的週數。 若 date1 落在星期一,則 DateDiff 計算星期一的數量直到 date2。 算數, date2 但不 date1算。 然而,若 interval 是) ("ww" 週,函 DateDiff 式會回傳兩個日期之間的日曆週數。 它計算介於 date1date2之間的星期日數量。 DateDiff 如果落在星期天就算 date2 數,但 date1即使落在星期天也不算數。

若指 date1 的是比 晚 date2的時間點,則該 DateDiff 函數回傳負數。

這個 firstdayofweek 論證影響了使用 "w""ww" 區間符號的計算。

如果 date1date2 是字面意義上的日期,指定的年份將成為該日期的永久部分。 然而,如果 date1date2 以雙引號包 (" ") ,且省略年份,每次評估 or date2 表達式時date1,程式碼中會插入當前年份。 這讓你能寫出可以在不同年份使用的程式碼。

當你比較12月31日和隔年1月1日時, DateDiff ("yyyy" 年) 即使只過了一天,也會回來1。

注意

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

DateDiff 查詢範例

運算式 結果
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; 回傳日期 01/01/2010 與欄位中數值 DateofSale 之間的差值(以年份為單位)。
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 函式。 舉例來說,假設你有一個用來履行客戶訂單的表單。 在訂單表中,有一個欄位 ReceiveBefore 顯示客戶需要在什麼之前收到訂單。 你可以在表單上用 DateDiff 文字框功能顯示訂單還剩多少天數。

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

=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

另請參閱

選擇合適的約會功能