Нередко перед разработчиком баз данных встаёт задача определить разность между двумя датами прямо в запросе. Рассмотрим, как эта задача решается в Access.
Для нахождения разности между двумя датами в Access предусмотрена функция DateDiff, которая принимает три обязательных аргумента (в порядке следования):
- Интервал – строковая константа, которая определяет в каких интервалах должна быть вычислена разность дат. Другим словами этот параметр задаёт «единицу измерения» для разности дат;
- Первая дата для вычисления разности;
- Вторая дата для вычисления разности.
Если первая дата является более поздней чем вторая функция DateDiff возвращает отрицательное значение.
Интервал может принимать следующие значения:
Параметр | Значение |
yyyy | Год |
q | Квартал |
m | Месяц |
y | День года |
d | День |
w | День недели |
ww | Неделя |
h | Часы |
n | Минуты |
s | Секунды |
Ниже приведён пример запроса, который изменяет статус для определённых записей, которые были созданы более 10 дней назад.
1 |
UPDATE [Записи] SET [Статус] = 10 WHERE (ABS(DateDiff('d', Now(), [Дата])) > 10) AND (([Статус]=1)OR([Статус]=2)) |
Функция 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 | Первой неделей считается первая полная неделя года. |
Источники
Добавить комментарий