返回一个 Variant (Long) 指定两个日期之间的时间间隔数。
语法
DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear])
函数 DateDiff 具有以下参数:
| 参数 | 说明 |
|---|---|
interval |
必需。 字符串表达式,它是用于计算 和 date2之间的date1差值的时间间隔。 |
date1, date2 |
必需。 变量 (日期) 。 要在计算中使用的两个日期。 |
firstdayofweek |
可选。 一个指定一周的第一天的常量。 如果未指定,则假定为星期日。 |
firstweekofyear |
可选。 一个指定一年的第一周的常量。 如果未指定,则第一周是 1 月 1 日发生的周。 |
“设置”
参数 interval 具有以下设置:
| 设置 | 说明 |
|---|---|
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天数,可以使用) () "y" 或日 ("d" 。date2 当 interval 为 工作日 ("w") 时, DateDiff 返回两个日期之间的周数。 如果 date1 位于星期一, DateDiff 则计算星期一的个数,直到 date2。 它计数, date2 但不包括 date1。 但是,如果 interval 为 周 ("ww") ,则 DateDiff 函数返回两个日期之间的日历周数。 它计算 和 date2之间的date1星期日数。
DateDiff
date2如果它落在星期天,则计数,但它不计算 date1,即使它落在星期日。
如果 date1 引用晚于 date2的时间点,则 DateDiff 函数返回负数。
参数 firstdayofweek 影响使用 "w" 和 "ww" 间隔符号的计算。
如果 date1 或 date2 是日期文本,则指定的年份将成为该日期的永久部分。 但是,如果 date1 或 date2 用双引号括起来 (" ") ,并且省略年份,则每次计算 或 date2 表达式时date1,都会在代码中插入当前年份。 这样就可以编写可在不同年份使用的代码。
将 12 月 31 日与下一年的 1 月 1 日进行比较时, DateDiff 对于“年份 ("yyyy") 返回 1,即使只过了一天。
注意
对于 date1 和 date2,如果 Calendar 属性设置为公历,则提供的日期必须为公历。 如果日历为 Hijri,则提供的日期必须为 Hijri。
DateDiff 查询示例
| Expression | 结果 |
|---|---|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
返回日期 01/01/2010 和字段中的值 DateofSale 之间的差值(以年为单位)。 |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
返回系统日期和 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 代码中使用 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