回傳一個變 體 (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 式會回傳兩個日期之間的日曆週數。 它計算介於 date1 與 date2之間的星期日數量。
DateDiff 如果落在星期天就算 date2 數,但 date1即使落在星期天也不算數。
若指 date1 的是比 晚 date2的時間點,則該 DateDiff 函數回傳負數。
這個 firstdayofweek 論證影響了使用 "w" 和 "ww" 區間符號的計算。
如果 date1 或 date2 是字面意義上的日期,指定的年份將成為該日期的永久部分。 然而,如果 date1 或 date2 以雙引號包 (" ") ,且省略年份,每次評估 or date2 表達式時date1,程式碼中會插入當前年份。 這讓你能寫出可以在不同年份使用的程式碼。
當你比較12月31日和隔年1月1日時, DateDiff ("yyyy" 年) 即使只過了一天,也會回來1。
注意
對於 date1 和 date2,若性質 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