Возвращает параметр Variant (Long), заданный количество интервалов времени между двумя датами.
Синтаксис
DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear])
Функция DateDiff содержит следующие аргументы:
| Аргумент | Описание |
|---|---|
interval |
— обязательный аргумент. Строковое выражение, то есть интервал времени, используемый для вычисления разницы между date1 и date2. |
date1, date2 |
— обязательный аргумент. Вариант (дата). Две даты, которые необходимо использовать в вычислении. |
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"). When interval is Weekday ("w") DateDiff возвращает количество недель между двумя датами. Если date1 выпадает на понедельник, DateDiff подсчитывается количество понедельников до date2. Это считается, date2 но не date1. Если interval задано значение "Неделя" ("ww"), функция DateDiff возвращает количество календарных недель между двумя датами. Он подсчитывает количество воскресений между date1 и date2.
DateDiff засчитывается date2 , если оно выпадает на воскресенье, но не считается date1, даже если оно выпадает на воскресенье.
Если date1 ссылается на более поздний момент времени, чем date2, DateDiff функция возвращает отрицательное число.
Этот firstdayofweek аргумент влияет на вычисления, в которых используются символы "w" интервала и "ww"
Если date1 или date2 является литералом даты, указанный год становится постоянной частью этой даты. Но если date1 или date2 заключено в двойные кавычки (" "), и год опущен, то текущий год вставляется в код при каждом date1 вычислении выражения ИЛИ date2 . Это дает возможность писать код, который можно использовать в разные годы.
При сравнении 31 декабря с 1 января следующего года DateDiff для Год ("yyyy") возвращает 1, даже если прошел всего один день.
Примечание
Для 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