Тип даних "Дата й час розширений" зберігає відомості про дату й час і схожий на тип даних "Дата й час", але забезпечує більший діапазон дат, вищу дробову точність і сумісність із типом дати SQL Server DateTime2. Під час імпорту або зв'язування даних Access із SQL Server можна зіставити розширене поле дати й часу Access зі стовпцем SQL Server DateTime2. Докладні відомості див. в статті datetime2 (Transact-SQL).
Коли ви створюєте вирази та використовуєте функції дати й часу на основі типу даних "Розширений дати/час" в Access, ви можете втратити точність обчислень або виникнути інші проблеми з результатами. Ми знаємо про цю проблему й плануємо покращити підтримку виразів і функцій у наступному випуску. Щоб тимчасово вирішити цю проблему, можна: створити наскрізний запит, щоб використовувати еквівалентні функції SQL Server виразу та дати й часу. Докладні відомості див. в статті "Порівняння мови SQL в Access із мовою SQL Server TSQL".
У цій статті
Порівняння типів даних "Дата й час" і "Дата/час розширений"
У таблицях нижче наведено основні відмінності між цими двома типами даних.
| Attribute (Атрибут) | Дата й час | Дату й час подовжено |
|---|---|---|
| мінімальне значення | 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-байтовий рядок |
Використання типу даних "Дата й час розширений"
Нижче наведено вказівки щодо використання.
Table Design View Щоб використовувати більший діапазон даних і вищу точність, можна додати поле до таблиці Access. Тип даних "Дата й час" також можна перетворити на тип даних "Дата й час розширений" у режимі конструктора таблиці. Використання цього типу даних як поля первинного ключа також підтримується. Докладні відомості див. в статті "Створення таблиці та додавання полів".
Введення дати й часу Введення значень дати й часу аналогічне типу даних "Дата й час", але можна також вводити дробову наносекунду. Наприклад:
- Формат запису: мм/дд/рррр гг:хх:сс.nnnnnnn
- Приклад: 15.06.1215 09:25:3.234
Якщо дробових наносекунд більше 7, вони округлюються до 7 цифр. Щоб керувати відображенням дробових наносекунд, відкрийте таблицю, на стрічці виберіть «Поля», а в групі «Форматування» виберіть «Збільшити кількість десяткових знаків
«Зменшити розряди».
Форматування Обидва типи даних "Дата й час" і "Дата/час розширений" використовують схожі рядки стандартного форматування " Повний формат", " Довгий формат", "Середній формат дати", "Короткий формат дати", " Довгий формат часу", " Середній формат часу" та " Короткий формат часу " і обидва підтримують настроюване форматування. Стандартні формати з розширеним типом даних на основі дати й часу підтримують дробову точність до наносекунд. Форматування типу даних "Розширений період_дати/часу" за замовчуванням використовується для формату "Повний формат дати " та " Довгий формат часу " з урахуванням параметрів, визначених у регіональних параметрах Windows. Ви також можете контролювати форматування дробової точності, використовуючи властивість Decimal PlacesPlaces, щоб вказати кількість цифр праворуч від десяткової коми (1-7).
Зв'язування та імпорт За його допомогою також можна створити зв'язок із базою даних або імпортувати відомості з неї, використовуючи відповідний тип даних, як-от SQL Server DateTime2. Підтримуються бази даних SQL Server версії 2014 або пізнішої. Для подовженого типу даних потрібно використовувати драйвер Microsoft ODBC для SQL Server 11 або пізнішої версії. Радимо використовувати драйвер Microsoft ODBC 13.1 для SQL ServerSQL Server. Також підтримується використання бази даних OLE. Докладні відомості див. в статтях "Підтримка типів даних для вдосконалення дати й часу в ODBC " і "Використання розширених функцій дати й часу (OLE DB)".
Форми та звіти До форми або звіту можна додати тип даних "Дата й час розширений". У формі можна використовувати засіб вибору дати та маску вводу для введення дати з більшим діапазоном, але не для дробової точності для наносекунд.
Підтримка виразів Тип даних "Розширений дати/час" підтримує агрегатні функції SQL і обчислення виразів. Наприклад, при використанні LoggedDateTime як поля з розширеним типом даних "Дата/час розширений":
| Завдання | Приклад | Результат |
|---|---|---|
| Пошук найменшого значення | Min(LoggedDateTime) | Найраніші дата й час у діапазоні |
| Видобути місяць | Month(LoggedDateTime) | назва місяця, наприклад січень; |
| Додати один день | [LoggedDateTime]+1 | Вівторок стане середою |
Зауваження щодо зворотної сумісності
Тип даних "Дата й час із розширеним" несумісний із попередніми версіями Microsoft Access. Якщо цей тип використовується в локальній таблиці Access, бази даних не можна буде відкрити у версіях програми Access, які не містять цієї функції.
Щоб увімкнути або вимкнути розширений тип даних "Дата й час" для операцій зв'язування й імпорту, виберіть параметр " Поточна база даних в Access" Підтримка типу даних "Дата й час і розширений формат" для зв'язаних або lmported таблиць. Докладні відомості див. в статті "Настроювання параметрів користувача для поточної бази даних".
Використання типу даних "Дата й час Розширений" як рядка у VBA
Наведені нижче приклади VBA використовують методи DAO для відображення, введення й обчислення типу даних "Дата й час Розширений" на основі таблиці нижче.
| Ідентифікатор | ДТЕДата | DTData |
|---|---|---|
| 1 | 1/1/2 1:01:03.1234567 AM | 01.01.2001 |
Ім'я таблиці: Підтримуваний DTET
Тип даних "Ідентифікатор": Лічильник
Тип даних DTEData: Дату й час подовжено
Тип даних DTData: Дата й час
Приклад: відображення дати й часу
У наведеному нижче прикладі відображено дату й час. Використовується формат мм/дд/рррр гг:хх:сс.nnnnn у 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
Підсумок Відображення екрана: 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):
| Ідентифікатор | ДТЕДата | DTData |
|---|---|---|
| 1 | 1/1/2 1:01:03.1234567 AM | 01.01.2001 |
| 2 | 1/1/9999 1:01:01.0123000 AM | 01.01.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
Функції, які працюють із розширеним значенням дати й часу у виразах запитів
З розширеною датою й часом у виразах запиту працюють наведені нижче функції.
Рік, Місяць, День, Година, Хвилина, Секунда, ДатаДодавання, ДатаРізф і ДатаЧастина.
Крім того, існують розширені версії деяких функцій, які не можуть за допомогою типу аргументу визначити, чи має обчислення повертати розширене значення типу "Дата й час". Це:
DateValueExtended, TimeValueExtended, DateSerialExtended, TimeSerialExtended, NowExtended, DateExtended, DateTimeExtended і TimeExtended.
Ці функції працюють так само, як і функції без значення "Extended" у кінці, але повертають розширене значення дати й часу, а не значення дати й часу.
Зверніть увагу, що код VBA не змінено, нові функції не розпізнаються в коді VBA, а наявні функції не працюватимуть із розширеними значеннями дати й часу.
Приклад
Вихідний запит.
Select DateValue([OrderDate]) AS OrderDateOnly_DateValue
, Format([OrderDate],"Short Date") AS OrderDateOnly_Format
From tblOrders
Тепер змініть DateValue([Дата замовлення]) на DateValueExtended([Дата замовлення]), щоб виправити перший вираз.
Зверніть увагу, що Access не обробляє функцію Format для стовпців із розширеною датою та часом. Можна просто встановити властивість Format для стовпця.
Тому якщо ви використовуєте:
SELECT DateValueExtended([OrderDate]) AS OrderDateOnly_DateValue, Table1.OrderDate
FROM Table1;
І встановіть для властивості "Формат" для другого стовпця значення "Короткий формат", щоб отримати потрібні результати.