Используем функцию DateDiff в Access

Нередко перед разработчиком баз данных встаёт задача определить разность между двумя датами прямо в запросе. Рассмотрим, как эта задача решается в Access.

Для нахождения разности между двумя датами в Access предусмотрена функция DateDiff, которая принимает три обязательных аргумента (в порядке следования):

  • Интервал – строковая константа, которая определяет в каких интервалах должна быть вычислена разность дат. Другим словами этот параметр задаёт «единицу измерения» для разности дат;
  • Первая дата для вычисления разности;
  • Вторая дата для вычисления разности.

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

Интервал может принимать следующие значения:

Параметр Значение
yyyy Год
q Квартал
m Месяц
y День года
d День
w День недели
ww Неделя
h Часы
n Минуты
s Секунды

 

Ниже приведён пример запроса, который изменяет статус для определённых записей, которые были созданы более 10 дней назад.

Функция DateDiff также принимает два необязательных параметра «Первый день недели» (по умолчанию воскресенье) и «Первая неделя года» (по умолчанию, неделя на которую приходится 1 января). Эти параметры используются крайне редко, но для справки приведём их возможные значения.

Первый день недели:

Константа Значение Описание
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 Первой неделей считается первая полная неделя года.

 

Источники

  1. Функция DateDiff. Access для Office 365 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *