Использование типа данных "Дата и время (расширенный)"

Применяется к
Access для Microsoft 365 Access 2024 Access 2021

Тип данных Date/Time Extended предназначен для хранения информации о дате и времени, он аналогичен типу данных Date/Time, но обеспечивает более широкий диапазон дат, более высокую точность дробных значений, а также совместимость с типом дат datetime2 SQL Server. При импорте или связывании данных Access с SQL Server можно непосредственно размещать данные из поля Date/Time Extended в Access в столбце datetime2 в SQL Server. Дополнительные сведения см. в спецификации datetime2 (Transact-SQL).

Предупреждение о дате и времени (расширенный) При создании выражений и использовании функций date/time на основе типа данных Date/Time Extended в Access возможна потеря точности вычислений или возникновение других проблем с результатами. Нам известна эта проблема, и мы планируем улучшить поддержку выражений и функций в предстоящем выпуске. В качестве временного решения проблемы можно создать запрос к внешнему источнику для использования эквивалентного выражения и функций date/time SQL Server. Дополнительные сведения см. в статье Сравнение языков Access SQL и SQL Server TSQL.

В этой статье

Сравнение типов данных Date/Time и Date/Time Extended Использование типа данных "Дата и время (расширенный)" Рекомендации по обратной совместимости Использование типа данных Date/Time Extended в качестве строки в VBA

Сравнение типов данных Date/Time и Date/Time Extended

В нижеприведенных таблицах перечислены важные различия между двумя типами данных.

Атрибут Date/Time Date/Time Extended
Минимальное значение 100-01-01 00:00:00 0001-01-01 00:00:00
Максимальное значение 9999-12-31 23:59:59.999 9999-12-31 23:59:59.9999999
Точность 0,001 секунды 1 наносекунда
Размер Двойная точность числа с плавающей запятой Строка кодировки из 42 байтов

К началу страницы

Использование типа данных Date/Time Extended

Ниже приведены важные практические рекомендации.

Режим конструктора таблиц Чтобы использовать преимущества большего диапазона данных и их более высокой точности, можно добавить поле в таблицу Access. Кроме того, вы можете преобразовать тип данных Date/Time в Date/Time Extended в режиме конструктора таблиц. Поле этого типа данных также можно использовать в качестве поля первичного ключа. Дополнительные сведения см. в статье Создание таблицы и добавление полей.

Ввод даты и времени Ввод значений даты и времени производится так же, как в типе данных Date/Time, за исключением того, что дробную часть теперь можно ввести в наносекундах. Например:

  • Формат записи: дд/мм/гггг чч:мм:сс,ннннннн
  • Пример: 15/06/1215 09:25:3,234

Если количество десятичных разрядов в долях секунды превышает 7, число округляется до 7 разрядов. Чтобы изменить формат отображения дробной части, откройте таблицу, на ленте выберите пункт "Поля", а затем в группе "Форматирование " выберите "Увеличить разрядность " или "Уменьшить разрядность ".

Форматирование В обоих типах данных Date/Time и Date/Time Extended используются схожие строки стандартного форматирования ( General Date, Long Date, Medium Date, Short Date, Long Time, Medium Time и Short Time ), которые поддерживают пользовательское форматирование. Для типа данных Date/Time Extended стандартные форматы, основанные на времени, также поддерживают точность дробных значений в наносекундах. При форматировании типа данных Date/Time Extended по умолчанию используются Общий формат даты и Длинный формат времени, а также параметры, заданные в Региональных параметрах Windows. Кроме того, можно управлять форматированием округления с помощью параметра Разрядность, указав количество цифр справа от десятичной запятой (1–7).

Связывание и импорт Кроме того, можно создать связь с данными или импортировать их из баз данных, содержащих соответствующий тип данных, например тип данных datetime2 в SQL Server. Поддерживаются базы данных SQL Server версии 2014 и более поздних версий. Для типа данных Date/Time Extended необходимо использовать драйвер Microsoft ODBC for SQL Server 11 или более поздней версии. Рекомендуется использовать драйвер Microsoft ODBC 13.1 для SQL Server. Также поддерживается использование OLE DB. Дополнительные сведения см. в статьях Поддержка типов данных для улучшений функции даты и времени в ODBC и Использование расширенных функций даты и времени (OLE DB).

Формы и отчеты В форму или отчет можно добавлять данные типа Date/Time Extended. В форме можно использовать элемент управления "Выбор даты" и маску ввода, чтобы указать дату с более широким диапазоном, но точность дробных значений в наносекундах не поддерживается.

Поддержка выражений Тип данных Date/Time Extended поддерживает агрегатные функции SQL и оценку выражений. Например, использование LoggedDateTime в качестве поля типа данных Date/Time Extended:

Задача Пример Результат
Поиск минимального значения Min(LoggedDateTime) Самые ранние значения даты и времени в диапазоне.
Извлечение месяца Month(LoggedDateTime) Название месяца, например январь
Добавление одного дня [LoggedDateTime]+1 Вторник становится средой

К началу страницы

Обратная совместимость

Тип данных Date/Time Extended несовместим с предыдущими версиями Microsoft Access. Если этот тип используется в локальной таблице Access, базы данных не будут доступны для версий Access, не включающих этот компонент.

Вы можете включать и отключать тип данных Date/Time Extended для связывания и импорта операций с помощью параметра "Доступ к текущей базе данных". Поддержка типа данных Date/Time Extended для связанных или lmported таблиц. Дополнительные сведения см. в статье Настройка пользовательских параметров текущей базы данных.

К началу страницы

Использование типа данных Date/Time Extended в качестве строки в VBA

В следующих примерах VBA для просмотра, ввода и оценки типа данных Date/Time Extended из приведенной ниже таблицы используются методы DAO.

ИД DTEData DTData
1 1/1/2 1:01:03,1234567 1/1/2001

Имя таблицы: DTETable (поддержка DTETable)
Тип данных "ИД": Счетчик
Тип данных DTEData: Date/Time Extended
Тип данных DTData: Дата и время

Пример: Отображение даты и времени

В приведенном ниже примере отображаются дата и время. Используется формат дд/мм/гггг чч:мм:сс,ннннннн для 24-часового представления времени. Формат не настраивается.


Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("DTETable")
Do Until rs.EOF
    Debug.Print rs!DTETable
    rs.MoveNext
Loop

Result (Результат) Представление Access: 01/01/0002 01:01:03,1234567.

Пример: Ввод даты и времени

В приведенном ниже примере дата и время вводятся с использованием строкового формата. Поддерживаются все стандартные форматы даты и времени.


Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("DTETable")
With CurrentDb.OpenRecordset("DTETable")
    .AddNew
    ![DTEData] = "1/1/9999 1:1:1.0123 AM"
    ![DTData] = #1/1/2001#
    .Update
End With

Result (Результат) Access добавит новую строку (ИД = 2):

ИД DTEData DTData
1 1/1/2 1:01:03,1234567 1/1/2001
2 1/1/9999 1:01:01,0123000 1/1/2001

Пример: Оценка выражения запроса

В приведенном ниже примере функция Day используется для извлечения числового значения дня из полей даты и времени.


Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT Day(DTEData) as day FROM DTETable")
Do Until rs.EOF
    Debug.Print "The day of the month is: "&rs!day
    rs.MoveNext
Loop

Result (Результат) Представление Access:

День месяца: 1
День месяца: 1

Функции, работающие с расширенной и датой (Date/Time Extended) в выражениях запросов

Указанные ниже функции работают с расширенной датой и временем в выражениях запросов.
​​​​​​​
Year, Month, Weekday, Day, Hour, Minute, Second, DateAdd, DateDiff и DatePart.

Кроме того, существуют расширенные версии некоторых функций, которые не могут использовать этот тип аргумента для определения того, что вычисление должно дать значение Date/Time Extended. К ним относятся:

DateValueExtended, TimeValueExtended, DateSerialExtended, TimeSerialExtended, NowExtended, DateExtended, DateTimeExtended и TimeExtended.

Эти функции работают так же, как и функция без слова "Extended" в конце, но возвращают значение Date/Time Extended, а не Date/Time.

Обратите внимание, что VBA не был изменен, новые функции не будут распознаны в коде VBA, а существующие функции не будут работать со значениями Date/Time Extended.

Пример

Исходный запрос:


Select DateValue([OrderDate]) AS OrderDateOnly_DateValue

, Format([OrderDate],"Short Date") AS OrderDateOnly_Format

From tblOrders

Теперь измените DateValue([OrderDate]) на DateValueExtended([OrderDate]), что исправит первое выражение.

Обратите внимание, что функция "Формат" не работает со столбцами типа "Дата и время (расширенный)". можно просто задать свойство "Формат" для столбца.

Поэтому, если вы используете:


SELECT DateValueExtended([OrderDate]) AS OrderDateOnly_DateValue, Table1.OrderDate

FROM Table1;

И установите свойство Формат для второго столбца в "Короткая дата", вы получите нужные результаты.

К началу страницы

См. также

Введение в использование типов данных и свойств полей

Форматирование поля даты и времени

Создание и удаление поля даты и времени