返回一个 Variant (Long) 值,指定两个指定的日期之间的时间间隔数。

语法

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

DateDiff函数语法具有以下参数:

提示:  在 Access 2010 中,表达式生成器IntelliSense,因此可以看到表达式需要哪些参数。 

参数

说明

interval

必需。 字符串表达式,用于计算date1date2 之间的差值。

date1, date2

必需。 变量 (日期) 。 要用于计算的两个日期。

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 设置。

vbFirstScript1

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 函数返回两个日期之间的日历周数。 它计算日期 1 和 date2 之间的 星期日数DateDiff 计算 日期 2( 如果它位于星期日);但它不计算 date1,即使它在星期日。

如果 date1 引用的时间点晚于 date2,DateDiff 函数返回负数。

一个dayofweek 参数会影响使用"w"和"ww"间隔符号的计算。

如果 date1date2 是 日期字符串 ,则指定的年份将成为该日期的永久部分。 但是,如果 date1date2 用双引号 (" ") "括起来,并且你省略了年份,则每次计算 date1date2 表达式时,会在代码中插入当前年份。 这样,就可以编写可在不同年中使用的代码。

将 12 月 31 日与下一年 1 月 1 日进行比较时,年 ("yyyy") 的 DateDiff 返回 1,即使仅经过一天。

注意:  对于 date1date2,如果 "日历 "属性设置为公历,则提供的日期必须是公历。 如果日历是回历,则提供的日期必须是回历。

DateDiff 查询示例

表达式

结果

SELECT DateDiff ("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales;

返回 Date2 和 Date1 (将 Date1 视为最早日期,将 Date2 视为) 年数。 结果:字段"DateofSale"和日期"01/01/2010"中的值之差,为"Years"的个数。

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"和"system date"之间的星期日数。 如果它位于星期日,它将计算系统日期;但它不计入"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 示例

在 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?

Expand your skills
Explore Training
Get new features first
Join Microsoft Office Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×