會傳回 Variant (Long),指定兩個指定日期之間的時間間隔數目。
語法
DateDiff ( interval, date1, date2 [, firstdayofweek] [, firstweekofyear] )
DateDiff 函數語法具有下列自變數:
引數 |
描述 |
---|---|
interval |
必要。 字串表達式是用來計算 date1 與 date2之間的時間間隔。 |
date1, date2 |
必要。 Variant (Date) 。 這是要用於計算的兩個日期。 |
firstdayofweek |
選擇性。 指定一周中第一天的 常數 。 如果未指定,則會假設星期日為假設。 |
firstweekofyear |
選擇性。 這是指定一年中第一周的常數。 如果未指定,則假設第一周為 1 月 1 日所在的周。 |
設定
間隔 引數 有下列設定:
設定 |
描述 |
---|---|
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 來計算兩個日期之間的天數,或是今天到年末之間的周數。
若要計算 date1 和 date2 之間的天數,您可以使用年份的日 (“y”) 或 Day (“d”) 。 當 interval 為 Weekday (“w”) 時, DateDiff 會 傳回兩個日期之間的周數。 如果 date1 落在星期一, DateDiff 會 計算星期一到 date2 的數目。 它會計算 date2 ,但不計算 date1。 不過,如果 interval 為 Week (“ww” ) ,DateDiff 函數會傳回兩個日期之間的行事歷周數。 它會計算 date1 和 date2 之間的星期日數目。 DateDiff 會計算 日期2 是否落在星期日;但不計算 date1,即使它落在星期日。
如果 date1 參照比 date2 晚的時間點, DateDiff 函數會傳回負數。
firstdayofweek 自變數會影響使用 “w” 和 “ww” 間隔符號的計算。
如果 date1 或 date2 是 日期文字,指定的年份會變成該日期的永久部分。 不過,如果 date1 或 date2 以雙引弧括住 (“ ”) ,而您省略年份,則每次評估 date1 或 date2 表達式時,都會將目前的年份插入程式代碼中。 這可讓您撰寫可用於不同年份的程序代碼。
比較緊接後一年的 12 月 31 日到 1 月 1 日時,年份的 DateDiff (“yyyy”) 傳回 1,即使只有一天已經過。
附註: 針對 date1 和 date2,如果 [ 行事曆 ] 屬性設定為 [公曆],則所提供的日期必須是公曆。 如果行事曆是回歷,則所提供的日期必須是回歷。
DateDiff 查詢範例
Expression |
結果 |
---|---|
SELECT DateDiff (“yyyy”,#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
傳回 Date2 和 Date1 (將 Date1 視為最舊,而 Date2 視為「年份」的最新) 。 結果:欄位 “DateofSale” 中的值與日期 “01/01/2010” 之間的差異為 'Year'。 |
SELECT DateDiff (“q”,[DateofSale],Date () ) AS DaysSinceSale FROM ProductSales; |
根據行事歷年份) ,傳回系統日期與 「DateofSale」 之間的差異為「季」 (數,並顯示在 「DaysSinceSale」 欄中。 傳回系統日期與 「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 範例
在 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