Возвращает значение типа Variant (Long), указывающее на количество интервалов времени между двумя указанными датами.
Синтаксис
DateDiff ( интервал, дата1, дата2 [, первый_день_недели[, первая_неделя_года]] )
Функция DateDiff имеет следующие аргументы:
Аргумент |
Описание |
---|---|
интервал |
Обязательный аргумент. Строковое выражение, которое обозначает интервал времени, используемый для вычисления разницы значений дата1 и дата2. |
дата1, дата2 |
Обязательный. Variant (Date). Две даты, которые необходимо использовать при вычислении. |
первый_день_недели |
Необязательный аргумент. Константа, задающая первый день недели. Если не указано, предполагается воскресенье. |
первая_неделя_года |
Необязательный аргумент. Константа, задающая первую неделю года. Если не указано, предполагается, что первая неделя будет неделей, в которую приходится 1 января. |
Параметры
Аргумент интерваларгумент имеет следующие значения:
Параметр |
Описание |
---|---|
yyyy |
Год |
q |
Квартал |
m |
Месяц |
y |
День года |
d |
День |
w |
День недели |
ww |
Неделя |
h |
Часы |
n |
Минуты |
s |
Секунды |
Аргумент первый_день_недели может принимать следующие значения:
Константа |
Значение |
Описание |
---|---|---|
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 можно использовать для вычисления числа дней между двумя датами или числа недель между сегодняшним днем и концом года.
Для вычисления числа дней между аргументами дата1 и дата2 используется значение "День года" ("y") или "День" ("d"). Если интервал задан как "День недели" ("w"), DateDiff возвращает число недель между двумя датами. Если день дата1 приходится на понедельник, DateDiff считает число понедельников до дня дата2. День, соответствующий значению аргумента дата2, учитывается, а дата1 — нет. Однако если интервал задан как "Неделя" ("ww"), функция DateDiff возвращает число календарных недель между двумя датами. Для этого рассчитывается число воскресений между днями дата1 и дата2. DateDiff учитывает день дата2, если он приходится на воскресенье; день дата1 не учитывается, даже если он приходится на воскресенье.
Если значение дата1 соответствует более поздней дате, чем значение дата2, функция DateDiff возвращает отрицательное число.
Аргумент первый_день_недели влияет на вычисления, если заданы значения "w" и "ww".
Если аргумент дата1 или дата2 содержит литерал даты, указанный год становится постоянной частью этой даты. Однако если аргумент дата1 или дата2 заключен в двойные прямые кавычки (" "), а год опущен, при каждой оценке выражения дата1 или дата2 в код подставляется текущий год. Это позволяет писать код, который можно использовать для разных лет.
Если при сравнении 31 декабря с 1 января следующего года указано значение "Год" ("yyyy"), функция DateDiff возвращает 1, хотя прошел всего один день.
Примечание: Если в свойстве Calendar задан григорианский календарь, аргументы дата1 и дата2 следует указывать соответствующим образом. Если используется календарь Хиджра, дата должна соответствовать ему.
Примеры запросов DateDiff
Expression |
Результаты |
---|---|
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(), [Заказы].[Срок])-10
Если открыть форму в режиме формы, то в текстовом поле отобразится количество дней, оставшихся до даты, когда необходимо отгрузить заказ. Если до даты, к которой клиенту необходимо получить заказ, осталось менее 10 дней, в текстовом поле отображается отрицательное число, указывающее, на сколько дней задержится доставка товара при условии немедленной отгрузки.
Пример VBA
Использование функции 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