Тип данных 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 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 используют одинаковые стандартные строки форматирования: Общий формат даты, Длинный формат даты, Средний формат даты, Короткий формат датыДлинный формат времени, Средний формат времении Короткий формат времени. Оба типа данных поддерживают пользовательское форматирование. Для типа данных 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 Driver 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, которые не включают эту функцию, не смогут открыть базу данных.
Вы можете включить или отключить расширенный тип данных даты и времени для операций связывания и импорта с помощью параметра Текущий доступ к базе данныхПоддержка расширенных типов данных даты и времени для связанных или lmported таблиц. Дополнительные сведения см. в статье Настройка пользовательских параметров текущей базы данных.
Использование типа данных Date/Time Extended в качестве строки в VBA
В следующих примерах VBA для просмотра, ввода и оценки типа данных Date/Time Extended из приведенной ниже таблицы используются методы DAO.
ID |
DTEData |
DTData |
1 |
1/1/2 1:01:03,1234567 |
1/1/2001 |
Имя таблицы: DTETable
тип данных ID: Autonumber тип данных DTEData: Date/Time Extended тип данных DTData: Date/TimeПример: Отображение даты и времени
В приведенном ниже примере отображаются дата и время. Используется формат дд/мм/гггг чч:мм:сс,ннннннн для 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
Результат Представление 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
Результат Access добавит новую строку (ИД = 2):
ID |
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
Результат Представление Access:
День месяца: 1
День месяца: 1См. также
Введение в использование типов данных и свойств полей