Повертає значення типу 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. Проте intervalDateDiff якщо аргумент "Тиждень" ("ww"), функція повертає кількість календарних тижнів між двома датами. Він підраховує кількість неділь між date1 і date2.
DateDiff рахує date2 , якщо він припадає на неділю, але він не враховується date1, навіть якщо він припадає на неділю.
Якщо date1 посилається на пізніший момент часу, ніж date2, DateDiff функція повертає від'ємне число.
Аргумент firstdayofweek впливає на обчислення, у яких використовуються символи інтервалу "w" та "ww" які використовуються.
Якщо date1 це date2 літерал дати, указаний рік стає постійною частиною цієї дати. Проте якщо date1date2 в подвійних лапках () або взятих у лапки (" "), а рік не вказано, поточний рік вставляється в код щоразу, коли 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 з текстовим полем у формі, щоб відобразити кількість днів, що залишилися, перш ніж замовлення має відправитися.
Якщо для доставки будь-якого замовлення потрібно десять днів, установіть властивість Джерело елемента керування текстового поля в такий спосіб:
=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