Нередко перед разработчиком баз данных встаёт задача определить разность между двумя датами прямо в запросе. Рассмотрим, как эта задача решается в 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 | Первой неделей считается первая полная неделя года. |
Источники

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