Sign in with Microsoft
Sign in or create an account.
Hello,
Select a different account.
You have multiple accounts
Choose the account you want to sign in with.

會傳回 Variant (Long),指定兩個指定日期之間的時間間隔數目。

語法

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

DateDiff 函數語法具有下列自變數:

引數

描述

interval

必要。 字串表達式是用來計算 date1date2之間的時間間隔。

date1date2

必要。 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 來計算兩個日期之間的天數,或是今天到年末之間的周數。

若要計算 date1date2 之間的天數,您可以使用年份的日 (“y”) 或 Day (“d”) 。 當 interval 為 Weekday (“w”) 時, DateDiff 會 傳回兩個日期之間的周數。 如果 date1 落在星期一, DateDiff 會 計算星期一到 date2 的數目。 它會計算 date2 ,但不計算 date1。 不過,如果 interval 為 Week (“ww” ) ,DateDiff 函數會傳回兩個日期之間的行事歷周數。 它會計算 date1date2 之間的星期日數目。 DateDiff 會計算 日期2 是否落在星期日;但不計算 date1,即使它落在星期日。

如果 date1 參照比 date2 晚的時間點, DateDiff 函數會傳回負數。

firstdayofweek 自變數會影響使用 “w” 和 “ww” 間隔符號的計算。

如果 date1date2 是 日期文字,指定的年份會變成該日期的永久部分。 不過,如果 date1date2 以雙引弧括住 (“ ”) ,而您省略年份,則每次評估 date1date2 表達式時,都會將目前的年份插入程式代碼中。 這可讓您撰寫可用於不同年份的程序代碼。

比較緊接後一年的 12 月 31 日到 1 月 1 日時,年份的 DateDiff (“yyyy”) 傳回 1,即使只有一天已經過。

附註:  針對 date1date2,如果 [ 行事曆 ] 屬性設定為 [公曆],則所提供的日期必須是公曆。 如果行事曆是回歷,則所提供的日期必須是回歷。

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

另請參閱

選擇正確的日期函數

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?
By pressing submit, your feedback will be used to improve Microsoft products and services. Your IT admin will be able to collect this data. Privacy Statement.

Thank you for your feedback!

×