Функция DateDiff

Отнася се за
Access за Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Връща стойност от тип Variant (Long), която задава броя времеви интервали между две дати.

Синтаксис

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

Функцията DateDiff има следните аргументи:

Аргумент Описание
interval Задължително. Израз във формата на низ, който представлява интервала от време, използван от вас за изчисляване на разликата между date1 и date2.
date1, date2 Задължително. Variant (Date). Двете дати, които искате да използвате в изчислението.
firstdayofweek Незадължително. Константа, която указва първия ден от седмицата. Ако не го посочите, се приема неделя.
firstweekofyear Незадължително. Константа, която указва първата седмица от годината. Ако не го укажете, първата седмица е седмицата, в която настъпва 1 януари.

Настройки

Аргументът interval има следните настройки:

Настройка Описание
yyyy Година
q Тримесечие
m Месец
y Ден от годината
d Ден
w Weekday
ww Седмица
h Час
n Минута
s Секунда

Аргументът firstdayofweek има следните настройки:

Константа Value Описание
vbUseSystem 0 Използва настройката за NLS API.
vbSunday 1 Неделя (по подразбиране)
vbMonday 2 Понеделник
vbTuesday 3 Вторник
vbWednesday 4 Сряда
vbThursday 5 Четвъртък
vbFriday 6 Петък
vbSaturday 7 Събота.
Константа Value Описание
vbUseSystem 0 Използва настройката за NLS API.
vbFirstJan1 1 Започва със седмицата, в която настъпва 1 януари (по подразбиране).
vbFirstFourDays 2 Започва с първата седмица, която има поне четири дни в новата година.
vbFirstFullWeek 3 Започва с първата пълна седмица на годината.

Забележки

Можете да използвате DateDiff функцията, за да определите колко конкретни времеви интервала съществуват между две дати. Може например да го използвате DateDiff за изчисляване на броя дни между две дати или броя седмици между днешната дата и края на годината.

За да изчислите броя на дните между date1 и date2, можете да използвате или Ден от годината ("y"), или ден ("d"). Когато interval е ден от седмицата ("w"), DateDiff връща броя седмици между двете дати. Ако date1 попада в понеделник, DateDiff преброява броя на понеделниците до date2. Брои date2 се, но не date1. Ако interval обаче DateDiff е "Седмица" ("ww"), функцията връща броя на календарните седмици между двете дати. Преброява броя на неделите между date1 и date2. DateDiff се date2 брои, ако се пада в неделя, но не date1се брои, дори и да се пада в неделя.

If date1 препраща към по-късна точка във времето от date2, DateDiff функцията връща отрицателно число.

Аргументът firstdayofweek засяга изчисления, които използват символите и "ww""w" интервал.

Ако date1 или date2 е валид за дата, указаната година става постоянна част от тази дата. Ако date1 обаче или date2 е оградено с двойни кавички (" ") и пропуснете годината, текущата година се вмъква във вашия код всеки път, когато се изчислява изразът date1 OR date2 . Това дава възможност да пишете код, който да използвате в различни години.

Когато сравните 31 декември с 1 януари на следващата година, DateDiff за година ("yyyy") връща 1, въпреки че е изминал само един ден.

Забележка

За date1 и date2, ако настройката на свойството Calendar е григорианска, предоставената дата трябва да е григорианска. Ако календарът е хиджра, предоставената дата трябва да е хиджра.

DateDiff Query examples

Израз Резултати
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 дни, преди клиентът да трябва да получи поръчката, числото в текстовото поле е отрицателно. Той показва с колко дни закъснение ще бъде поръчката, ако я изпратите незабавно.

Използване на функцията DateDiff във VBA код

Този пример използва DateDiff функцията за показване на броя дни между дадена дата и днешната дата.

Dim TheDate As Date  ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg

Вж. също

Избиране на правилната функция за дата