會傳回 Variant (Long),指定兩個指定日期之間的時間間隔數目。
語法
DateDiff ( interval, date1, date2 [, firstdayofweek] [, first weekofyear] )
DateDiff 函數語法包含以下參數:
|
引數 |
描述 |
|---|---|
|
interval |
必要。 字串表達式,就是你用來計算 date1 和 date2 差異的時間區間。 |
|
約會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 函數會回傳兩個日期之間的日曆週數。 它會計算 date1 到 date2 之間的星期日數量。 DateDiff 若落在星期日,則計入 date2;但即使日期1落在星期天,也不算入。
如果 date1 指的是比 date2 晚的時間點, DateDiff 函數會回傳負數值。
Firstdayofweek 論證影響使用「w」和「ww」區間符號的計算。
如果 日期1 或 日期2 是字面日期,指定的年份將成為該日期的永久部分。 然而,如果 date1 或 date2 以雙引號 (“ ”) 包圍,且省略年份,每次評估 date1 或 date2 表達式時,代碼中會插入當前年份。 這使得可以撰寫可用於不同年份的程式碼。
當將12月31日與緊接著一年的1月1日比較時,年份 (“yyyy”) 的 DateDiff 會回傳1,儘管實際上只過了一天。
附註: 對於 日期1 和 日期2,如果 曆法屬性 設定是公曆,則所提供的日期必須是公曆。 如果曆法是伊斯蘭曆,則所提供的日期必須是伊斯蘭曆。
DateDiff 查詢範例
|
Expression |
結果 |
|---|---|
|
選擇日期差異 (“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