Повертає значення типу Variant (Long), яке задає кількість часових інтервалів між двома датами.
Синтаксис
DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear])
Функція DateDiff має такі аргументи:
| Аргумент | Опис |
|---|---|
interval |
— обов’язковий аргумент. Рядковий вираз, що є проміжком часу, який використовується для обчислення різниці між date1 та date2. |
date1, date2 |
— обов’язковий аргумент. Варіант Variant (дата). Дві дати, які потрібно використовувати в обчисленні. |
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 _тижня» ("w"), DateDiff повертає кількість тижнів між двома датами. Якщо date1 припадає на понеділок, DateDiff рахує кількість понеділків до date2. Це враховуєтьсяdate2, але не .date1 Якщо interval має значення Week ("ww"), функція DateDiff повертає кількість календарних тижнів між двома датами. Рахує кількість неділь між date1 і date2.
DateDiff враховується date2 , якщо він припадає на неділю, але не враховується date1, навіть якщо він припадає на неділю.
Якщо date1 посилається на пізніший момент часу date2, ніж , функція DateDiff повертає від'ємне число.
Аргумент firstdayofweek впливає на обчислення, у яких використовуються символи "w" та "ww" інтервали.
Якщо date1 це літерал дати date2 , то вказаний рік стає постійною частиною цієї дати. Однак, якщо date1date2 подвійні лапки (" "), а рік знято неправильно, то щоразу, коли date1 обчислюється вираз OR date2 , у код вставлятиметься поточний рік. Це дає можливість написати код, який можна використовувати в різні роки.
Порівнюючи 31 грудня з 1 січня наступного року, для значення року ("yyyy") буде повернуто 1, незважаючи на те, DateDiff що минув лише один день.
Примітка.
For date1 and 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 можна використовувати з текстовим полем у формі, щоб відобразити кількість днів до крайнього терміну доставки замовлення.
Припускаючи, що доставка замовлення займає десять днів, установіть властивість "Джерело елемента керування " текстового поля таким чином:
=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