Изменение дат с помощью функций и операторов в Access

Примечание

Office 365 ProPlus переименован в Майкрософт 365 корпоративные приложения. Для получения дополнительной информации об этом изменении прочитайте этот блог.

Эта статья применяется либо к файлу базы данных Microsoft Access (.mdb), либо к файлу базы данных Microsoft Access (.accdb), а также к файлу проекта Microsoft Access (.adp).

Умеренный: требуются базовые навыки макроса, кодирования и интероперабельности.

Сводка

В этой статье описываются функции и операторы, доступные в Microsoft Office Access 2007, Microsoft Office Access 2003 и в Microsoft Access 2002. С помощью функций и операторов можно изменить тип данных Date/Time с помощью примеров запросов. В примере запросов, которые можно использовать для изменения значений даты, используются таблицы в примере базы данных Northwind.mdb.

Примечание

Пример базы данных Northwind для Access 2007 не использует те же поля, что и предыдущие версии базы данных образцов Northwind. В таблице Employees нет полей HireDate и BirthDate, которые включены в примерную базу данных Northwind для Access 2007. Поле EmployeeID было переименовано в ID, а поле FirstName переименовано в Имя.

Дополнительные сведения

Access предоставляет операторам и функциям проверку или изменение полей с типом данных Date/Time. В следующем примере запросы используют манипуляции с датами, функции вычисления и операторы сравнения, доступные в Access.

Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Инженеры службы поддержки Майкрософт могут объяснить функциональность отдельной процедуры. Однако они не будут изменять эти примеры, чтобы предоставлять дополнительные функциональные возможности или создавать процедуры для удовлетворения ваших конкретных требований.

Функция Date() , Функция Now() и Format()

SELECT Date(), Now();

Функция Date() возвращает текущую дату в краткосрочном формате. Функция Now() возвращает текущую дату со временем.

SELECT Format (Now(), "dd mmmm yyyy");

Для указания формата даты можно использовать функцию Format() со значениями дат. В этом примере запрос возвращает текущую дату в формате длинной даты (01 декабря 2003 г.).

Функция Day() ( функция, функция WeekDay() и функция Month() и Функция Year()

SELECT HireDate, Day(HireDate) AS Day,
Weekday(HireDate) AS WeekDay,
Month(HireDate) AS Month, Year(HireDate) AS Year 
FROM Employees;

Из таблицы Сотрудники этот запрос возвращает дату найма, день найма, день недели найма, месяц найма и год найма для каждого сотрудника. Обратите внимание, что функция WeekDay() возвращает числовую величину, которая указывает день недели.

Функция DatePart()

SELECT *  FROM Employees
WHERE DatePart("yyyy", BirthDate) < 1960;

Из таблицы Employees этот запрос возвращает всех сотрудников, родившихся до 1960 года. Функция DatePart() может использоваться для извлечения части указанной даты, например дня, месяца или года.

Функция DateDiff()

SELECT EmployeeID, FirstName, BirthDate,
DateDiff("yyyy", BirthDate, Date()) AS Age
FROM Employees;

Из таблицы "Сотрудники" этот запрос возвращает ID сотрудника, имя, дату рождения и возраст каждого сотрудника. Функция DateDiff() возвращает разницу или задержку времени между двумя указанными значениями даты (с точки зрения дня, месяца, года или единиц времени, таких как часы, минуты и секунды).

Функция DateAdd()

SELECT EmployeeID, FirstName, HireDate,
DateAdd("yyyy", 10, HireDate)
FROM Employees;

Из таблицы "Сотрудники" этот запрос возвращает имя сотрудника, имя, дату найма и дату окончания 10-летия службы в компании. Функция DateAdd() прибавка к дате указывает определенное количество единиц времени, например день, месяц или год, а затем возвращает результат.

Можно напрямую добавить числовую величину к значению даты. Это необходимо для приумнождения значения даты на один день, как в следующем примере:

SELECT Date() + 1;

Этот запрос добавит текущую дату на один день, а затем возвращает итоговую дату.

Функция DateValue()

SELECT DateValue ("20 ноября 2003 г.") AS ValidDate;

Функция DateValue() проверяет, является ли строка ввода допустимой датой. Если строка ввода признана допустимой датой, дата возвращается в краткосрочном формате. Если строка ввода не признана допустимой датой, возвращается утверждение "Несоответствие типа данных в выражении критериев". Функция DateValue() распознает различные форматы дат, такие как mm dd yyyy, dd mm yy, dd mmm yyyy и dd mmm yyyy hh:mm:ss long date format.

Функция DateSerial()

SELECT DateSerial (2003, 03, 1-1);

Функция DateSerial() возвращает значение даты для указанных параметров ввода года, месяца и дня. Параметры ввода могут быть выражениями, которые связаны с арифметическими операциями. Функция DateSerial() оценивает выражения в параметрах ввода, прежде чем возвращает итоговую дату.

В этом примере запрос возвращает последний день в феврале за 2003 год. Последний параметр ввода за день со значением 1 отводится на 1. В результате параметр месяца оценивается до 2.

Использование операторов сравнения со значениями дат

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

  • < (меньше)
  • > (больше)
  • <= (меньше или меньше)
  • >= (больше или равно)
  • <> (не равно)
SELECT * FROM Employees
WHERE HireDate >= DateValue(" 10/01/1993")
AND HireDate <= DateValue("12/31/1993");

Этот запрос использует >= оператор сравнения и <= оператор сравнения, чтобы проверить, попадает ли дата найма сотрудника в диапазоне двух указанных дат. Этот запрос получает записи всех сотрудников, которые были наняты в последнем квартале 1993 календарного года.

SELECT * FROM Employees
WHERE HireDate <> Date();

Этот запрос использует оператора сравнения неравенства для получения записей всех сотрудников, у которых дата найма не равна текущей дате.

Функция WeekdayName()

SELECT WeekdayName(1, False, 1) AS FirstWeekDayName;

Функция WeekdayName() возвращает строку, которая указывает день недели, как указано в первом параметре. День возвращаемой строки недели зависит от третьего параметра. Этот параметр задает первый день недели. Второй параметр задан для False, чтобы указать, что имя буднего дня не должно быть сокращено.

В этом примере запрос возвращает значение воскресенье в качестве первого дня недели.

Функция MonthName()

SELECT MonthName (1);

Функция MonthName() возвращает строку, которая указывает имя месяца для указанного номера месяца от 1 до 12. Параметр ввода также может быть выражением, как в следующем запросе:

SELECT MonthName (DatePart ("m", Date()) );

Этот запрос возвращает имя текущего месяца.

Ссылки

Дополнительные сведения можно получить в следующих номерах статей, чтобы просмотреть статьи в базе знаний Майкрософт:

  • 290178 Создание запроса с параметрами для оценки сложных критериев в Microsoft Access
  • 290190 Создание двух функций для расчета возраста в месяцах и годах в Microsoft Access