Функция 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 имеет следующие параметры:

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

Замечания

Функцию можно использовать для DateDiff определения количества указанных интервалов времени между двумя датами. Например, можно использовать для DateDiff вычисления количества дней между двумя датами или количества недель между сегодня и концом года.

Чтобы вычислить количество дней между date1 и date2, можно использовать день года ("y") или день ("d"). Если interval имеет значение Weekday ("w"), DateDiff возвращает количество недель между двумя датами. Если date1 приходится на понедельник, DateDiff подсчитывает количество понедельников до date2. Он имеет значение, date2 но не date1. Однако DateDiff если interval имеет значение Week ("ww"), функция возвращает количество календарных недель между двумя датами. Он подсчитывает количество воскресений между date1 и date2. DateDiff date2 считается, если он приходится на воскресенье, но он не учитывает date1, даже если он приходится на воскресенье.

Если date1 ссылается на более позднюю точку во времени, чем date2, DateDiff функция возвращает отрицательное число.

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

Если date1 или date2 является литералом даты, указанный год становится постоянной частью этой даты. Однако если date1 или date2 заключены в двойные кавычки (" "), а год опускается, текущий год вставляется в код при каждом date1 вычислении выражения или date2 . Это позволяет писать код, который можно использовать в разные годы.

При сравнении 31 декабря с 1 января следующего года для года ("yyyy") возвращается значение 1, DateDiff хотя прошло всего один день.

Примечание

Для date1 и date2, если Calendar свойство имеет значение григорианский, указанная дата должна быть григорианской. Если используется календарь Хиджра, дата должна соответствовать ему.

Примеры запросов DateDiff

Выражение Результаты
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 можно использовать с текстовым полем в форме, чтобы отобразить количество дней, оставшееся до отправки заказа.

Если для отправки любого заказа требуется десять дней, задайте свойство Control Source текстового поля следующим образом:

=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

См. также

Выбор правильной функции даты