使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

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

语法

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

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

参数

说明

interval

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

date1date2

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

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 如果日期为星期日,则计算 date2 ;但它不计算 date1,即使它确实落在星期天。

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

firstdayofweek 参数影响使用“w”和“ww”间隔符号的计算。

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

将 12 月 31 日与直接下一年的 1 月 1 日进行比较时, DateDiff for Year (“yyyy”) 返回 1,即使只过去了一天。

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

DateDiff 查询示例

Expression

结果

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

返回 Date2 和 Date1 之间的差值 (将 Date1 视为最早的日期,将 Date2 视为最新) 作为“年数”。 结果:字段“DateofSale”和日期“01/01/2010”作为“年数”的值之间的差异。

SELECT DateDiff (“q”,[DateofSale],Date () ) AS DaysSinceSale FROM ProductSales;

返回系统日期与“DateofSale”之间的差值,作为“Quarters” (的数量基于日历年) ,并显示在“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

另请参阅

选择正确的日期函数

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×