傳回指定兩個日期之間時間間隔數目 (長) 的變體。
語法
DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear])
DateDiff函數有下列引數:
| 引數 | 描述 |
|---|---|
interval |
必要。 字串運算式,這是您用來計算 和 之date1date2差的時間間隔。 |
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 來計算兩個日期之間的天數,或今天與年底之間的週數。
若要計算 和 date2之間的date1天數,您可以使用 [一年中的日] ("y") 或 [第 ("d" 日]) 。
interval何時是 [工作日] ("w") ,DateDiff傳回兩個日期之間的週數。 如果落在星期一,DateDiff則date1計算星期一的數目,直到 date2。 這算 date2 數,但不算數 date1。 不過,如果是 Week ("ww") ,則intervalDateDiff函數會傳回兩個日期之間的行事曆週數。 它計算 和 date2之間的date1星期日數目。
DateDiff 如果落在星期天就算數 date2 ,但就算不算 date1,哪怕落在星期天。
如果參照的時間點晚date2於 ,函數date1會DateDiff傳回負數。
firstdayofweek引數會影響使用 和 "ww" 區間符號的"w"計算。
如果 或 date2 是日期文字,則date1指定的年份會成為該日期的永久部分。 不過,如果) (" " 用雙引號括住 ordate2,而且省略年份,則date1每次評估 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 顯示。 如果落在星期一,DateDiff則DateofSale計算到系統日期為止的星期一數目。 它會計算系統日期,但不計算 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 表單上搭配文字方塊使用函數,以顯示訂單必須出貨前剩餘的天數。
假設出貨任何訂單需要 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