Функция DateDiff

Применяется к
Access для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

Синтаксис

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

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

Аргумент Описание
интервал — обязательный аргумент. Строковое выражение, которое представляет собой интервал времени, используемый для вычисления разницы между датой 1 и датой 2.
дата1, дата2 — обязательный аргумент. Variant (Date). Две даты, которые необходимо использовать при вычислении.
первый_день_недели — необязательный аргумент. Константой, указывающей первый день недели. Если не указано, предполагается воскресенье.
первая_неделя_года Необязательный аргумент. Константа, задающая первую неделю года. Если не указано, предполагается, что первая неделя будет неделей, в которую приходится 1 января.

Параметры

Аргумент interval имеет следующие параметры:

Параметр Описание
yyyy Год
q Квартал
m Месяц
y День года
d День
w День недели
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"). Если интервал имеет значение Weekday ("w"), DateDiff возвращает количество недель между двумя датами. Если date1 приходится на понедельник, DateDiff подсчитывает количество понедельников до даты 2. Он подсчитывает date2, но не date1. Однако если интервал имеет значение Week (ww), функция DateDiff возвращает количество календарных недель между двумя датами. Он подсчитывает количество воскресений между date1 и date2. DateDiff подсчитывает дату 2 , если она приходится на воскресенье; но он не считается датой1, даже если она выпадает на воскресенье.

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

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

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

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

Примечание

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

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

Выражение Результаты
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; Возвращает разницу между Датой 2 и Датой 1 (дата1 считается самой старой, а Date2 — как новейшая) как число лет. Результат. Разница между значениями в поле "DateofSale" и датой "01.01.2010" в виде числа "Лет".
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" и "системной датой". Он подсчитывает системную дату, если она приходится на воскресенье; но он не считается "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 можно использовать везде, где можно использовать выражения. Например, предположим, что у вас есть форма, используемая для выполнения заказов клиентов. В таблице Orders имеется поле 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

См. также

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