Типът данни "Удължено дата/час" съхранява информация за дата и час и е подобен на типа данни "Дата/час", но предоставя по-голям диапазон от дати, по-висока дробна точност и съвместимост с типа на датата SQL Server datetime2. Когато импортирате или свързвате данни на Access към SQL Server, можете последователно да съпоставите поле за дата и час на Access в колона SQL Server дата и час2. За повече информация вж. datetime2 (Transact-SQL).
Предупреждение за
Когато създавате изрази и използвате функции за дата/час въз основа на типа данни "Удължено дата/час" в Access, може да загубите точност в изчисленията или да срещнете други проблеми с резултатите. Наясно сме с този проблем и планираме да поддържаме по-добре изразите и функциите в предстоящо издание. Като заобиколно решение можете да създадете транзитна заявка, за да използвате еквивалентните функции за SQL Server израз и дата/час. За повече информация вижте Сравняване на Access SQL с SQL Server TSQL.
В тази статия
| Сравняване на типове данни "Удължено дата/час" | Използване на типа данни "Удължено време/дата" | Съображения за обратна съвместимост | Използване на типа данни "Удължено дата/час" като низ във VBA |
|---|
Сравняване на типове данни "Удължено дата/час"
Таблиците по-долу обобщават важните разлики между двата типа данни.
| Атрибут | Дата/час | Удължено дата/час |
|---|---|---|
| Минимална стойност | 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 байта |
Използване на типа данни "Удължено време/дата"
Информацията по-долу описва важни съображения за използването.
Изглед за проектиране на таблица За да се възползвате от по-големия диапазон от данни и по-висока точност, можете да добавите поле към таблица на Access. Можете също да преобразувате тип данни "Удължено дата/час" в изглед за проектиране на таблица. Използването на този тип данни като поле за първичен ключ също се поддържа. За повече информация вижте Създаване на таблица и добавяне на полета.
Въвеждане на дата и час Въвеждането на стойности за дата и час е подобно на типа данни "Дата/час", с изключение на това, че можете също да въведете дробна наносекунда. Например:
- Формат на запис: mm/dd/yyyy hh:mm:ss.nnnnnnn
- Пример: 15.06.1215 09:25:3.234
Ако има повече от 7 дробни наносекунди, те се закръгляват до 7 цифри. За да управлявате показването на дробните наносекунди, отворете Таблица, на лентата изберете Полета и в групата Форматиране изберете Изображение на
за увеличаване на десетичните знаци или Намали десетичните знаци
.
Форматиране И двата типа данни "Дата/час" и "Удължено време", използват подобни стандартни низове за форматиране на "Обща дата", "Дълга дата", "Междиннадата", "Кратка дата", "Дълъг час", "Среден час" и "Кратък час" и поддържат персонализирано форматиране. За типа данни "Удължено дата/час" стандартните формати, базирани на време, поддържат също и дробна точност за наносекунди. Форматирането на типа данни "Удължено дата/час" по подразбиране е във формати " Обща дата " и "Дълъг час " и следва опциите, зададени в регионалните настройки на Windows. Можете също да управлявате форматирането на дробната точност с помощта на свойството Десетичен Places, за да зададете броя на цифрите вдясно от десетичната точка (1 – 7).
Свързване и импортиране Можете също да се свържете към или да импортирате от бази данни със съответстващ тип данни, като например типа данни SQL Server datetime2. SQL Server версия 2014 или по-нови бази данни се поддържат. Типът данни "Удължено дата/час" изисква използването на Microsoft ODBC драйвер за SQL Server 11 или по-нова версия. Препоръчваме да използвате Microsoft ODBC Driver 13.1 за SQL Server. Използването на OLE база данни също се поддържа. За повече информация вж. Поддръжка на типа данни за подобрения в дата и час на ODBC и използване на подобрени функции за дата и час (OLE база данни)..
Формуляри и отчети Можете да добавите типа данни "Удължено дата/час" към формуляр или отчет. Във формуляр можете да използвате инструмента за избор на дата и маската за въвеждане, за да въведете дата с по-големия диапазон, но не и дробната точност за наносекунди.
Поддръжка на изрази Типът данни "Удължено дата/час" поддържа SQL агрегатни функции и оценка на изрази. Например чрез LoggedDateTime като поле с данни от типа "Удължено дата/час":
| Задача | Пример | Резултат |
|---|---|---|
| Намиране на минималната стойност | Min(LoggedDateTime) | Най-ранната дата и час в рамките на диапазона |
| Извлечи месеца | Month(LoggedDateTime) | Името на месеца, като например януари |
| Добавяне на един ден | [Регистрирана_датаTime]+1 | Вторник ще стане сряда |
Съображения за обратна съвместимост
Типът данни "Удължено дата/час" не е съвместим с предишни версии на Microsoft Access. Ако типът се използва в локална таблица на Access, версиите на Access, които не включват тази функция, няма да могат да отворят базата данни.
Можете да разрешите или забраните типа данни "Удължено дата/час" за операции на свързване и импортиране с опцията "Достъп до текущата база данни" опцията "Поддръжка на разширен тип данни за дата/час" за свързани/импортирани таблици. За повече информация вижте Задаване на потребителски опции за текущата база данни.
Използване на типа данни "Удължено дата/час" като низ във VBA
Следващите примери на VBA използват методите DAO за показване, въвеждане и оценяване на типа данни "Удължено дата/час" въз основа на таблицата по-долу.
| ИД | DTEData | DTData |
|---|---|---|
| 1 | 01.1.2017 г., 01:03.1234567 | 1.1.2001 |
Име на таблица: DTETable
Тип данни "ИД": Автономериране
Тип данни на DTEData: Удължено дата/час
Тип данни на DTData: Дата/час
Пример: Показване на датата и часа
Примерът по-долу показва датата и часа. Използваният формат е mm/dd/yyyy hh:mm:ss.nnnnnnn в 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):
| ИД | DTEData | DTData |
|---|---|---|
| 1 | 01.1.2017 г., 01:03.1234567 | 1.1.2001 |
| 2 | 01.1.9999 1:01:01.0123000 AM | 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
Функции, които работят с "Удължено дата/час" в изрази на заявки
Следните функции работят с "Удължено дата/час" в изрази на заявки:
Година, Месец, Работен ден, Ден, Час, Минута, Втори, ДатаДобавка, DateDiff и DatePart.
Освен това има разширени версии на някои функции, които не могат да използват типа на аргумента, за да се определи, че изчислението трябва да доведе до стойност на "Удължено дата/час". Това са:
DateValueExtended, TimeValueExtended, DateSerialExtended, TimeSerialExtended, NowExtended, DateExtended, DateTimeExtended и TimeExtended.
Тези функции работят по същия начин като функцията без "Разширен" в края, но връщат стойност за "Удължено дата/час", а не стойност за "Дата/час".
Обърнете внимание, че VBA не е променен, новите функции няма да се разпознаят във VBA кода и съществуващите функции няма да работят със стойностите на "Удължено дата/час".
НАПРИМЕР:
Първоначална заявка:
Select DateValue([OrderDate]) AS OrderDateOnly_DateValue
, Format([OrderDate],"Short Date") AS OrderDateOnly_Format
From tblOrders
Сега променете DateValue([OrderDate]) на DateValueExtended([OrderDate]), което ще коригира първия израз.
Обърнете внимание, че Access не обработва функцията Format за колони с удължено време/дата; можете просто да зададете свойството Формат за колоната.
Следователно, ако използвате:
SELECT DateValueExtended([OrderDate]) AS OrderDateOnly_DateValue, Table1.OrderDate
FROM Table1;
И задайте свойството Формат за втората колона на "Кратка дата", ще получите желаните резултати.
Вж. също
Въведение в типовете данни и свойствата на полетата