Typ danych rozszerzonej daty/godziny przechowuje informacje o dacie i godzinie i jest podobny do typu danych data/godzina, ale oferuje większy zakres daty, większą precyzję ułamkową, a także zgodność z typem danych datetime2 programu SQL Server. Po zaimportowaniu lub połączeniu danych programu Access z programem SQL Server możesz regularnie mapować pole Rozszerzona data/godzina w programie Access do kolumny typu danych datetime2 programu SQL Server. Aby uzyskać więcej informacji, zobacz datetime2 (Transact-SQL).
Ostrzeżenie W przypadku tworzenia wyrażeń i używania funkcji daty/godziny na podstawie typu danych rozszerzonej daty/godziny w programie Access możesz utracić precyzję obliczeń lub możesz napotkać inne problemy dotyczące uzyskiwanych wyników. Wiemy o tym problemie i planujemy zapewnić lepsze wsparcie dla wyrażeń i funkcji w najbliższej wersji. Aby obejść ten problem, możesz utworzyć zapytanie przekazujące w celu użycia równoważnego wyrażenia programu SQL Server oraz funkcji daty/godziny. Aby uzyskać więcej informacji, zobacz Porównanie języka SQL programu Access z językiem TSQL programu SQL Server.
W tym artykule
Porównywanie typów danych daty/godziny oraz rozszerzonej daty/godziny
W poniższej tabeli zestawiono istotne różnice między tymi dwoma typami danych.
| Atrybut | Data/godzina | Rozszerzona data i godzina |
|---|---|---|
| Wartość minimalna | 100-01-01 00:00:00 | 0001-01-01 00:00:00 |
| Wartość maksymalna | 9999-12-31 23:59:59.999 | 9999-12-31 23:59:59.9999999 |
| Dokładność | 0,001 sekundy | 1 nanosekunda |
| Rozmiar | Wartość zmiennoprzecinkowa o podwójnej precyzji | Zakodowany ciąg o długości równej 42 bajty |
Używanie typu danych rozszerzonej daty/godziny
Poniższe informacje opisują istotne zagadnienia dotyczące użycia.
Widok Projekt tabeli Aby uzyskać korzyść ze stosowania większego zakresu danych oraz większej precyzji, możesz dodać odpowiednie pole do tabeli programu Access. Możesz również przekonwertować typ danych data/godzina na typ danych rozszerzonej daty/godziny w widoku Projekt tabeli. Używanie tego typu danych jako pola klucza podstawowego jest także obsługiwane. Aby uzyskać więcej informacji, zobacz Tworzenie tabeli i dodawanie pól.
Wprowadzanie daty i godziny Wprowadzanie wartości daty i godziny jest podobne do wprowadzania typu danych data/godzina, z wyjątkiem tego, że możesz również wprowadzić ułamki nanosekundy. Na przykład:
- Format wpisu: mm/dd/rrrr gg:mm:ss.nnnnnnn
- Przykład: 06/15/1215 09:25:3.234
Jeśli istnieje więcej niż 7 ułamków nanosekundy, są one zaokrąglone do postaci siedmiocyfrowej. Aby kontrolować wyświetlanie ułamków nanosekundy, otwórz tabelę, na wstążce wybierz pozycję Pola, a następnie w grupie Formatowanie wybierz pozycję Obraz
Zwiększ liczbę miejsc po przecinku lub Zmniejsz liczbę miejsc dziesiętnych
.
Formatowanie Oba typy danych, data/godzina oraz rozszerzona data/godzina, używają podobnych ciągów standardowego formatowania daty ogólnej, daty długiej, daty średniej, daty krótkiej, godziny długiej, godziny średniej i godziny krótkiej , a ponadto oba te typy obsługują formatowanie niestandardowe. W przypadku rozszerzonego typu danych daty/godziny standardowe formaty oparte na czasie również obsługują precyzję ułamkową dla nanosekund. Formatowanie typu danych rozszerzonej daty/godziny to domyślne formaty Daty ogólnej oraz Godziny długiej, a także formatowanie to jest zgodne z opcjami wymienionymi w obszarze Ustawienia regionalne systemu Windows. Możesz również kontrolować formatowanie precyzji ułamkowej przy użyciu właściwości Miejsca dziesiętne w celu określenia liczby cyfr po prawej stronie separatora dziesiętnego (1-7).
Łączenie i importowanie Można również tworzyć połączenia z bazami danych zawierającymi odpowiedni typ danych, na przykład typ danych datetime2 programu SQL Server, oraz importować dane z takich baz. Obsługiwane są bazy danych programu SQL Server w wersji 2014 lub nowszej. Typ danych rozszerzonej datay/godziny wymaga użycia sterownika ODBC firmy Microsoft dla programu SQL Server 11 lub nowszego. Zalecamy używanie sterownika ODBC 13.1 firmy Microsoft dla programu SQL Server. Obsługiwane jest również korzystanie z bazy danych OLE. Aby uzyskać więcej informacji, zobacz Obsługa typu danych w celu ulepszenia daty i godziny ODBC oraz Korzystanie z funkcji rozszerzonej daty i godziny (OLE DB).
Formularze i raporty Do formularzy i raportów można dodać typ danych rozszerzonej daty/godziny. W formularzu możesz używać selektora daty i maski wprowadzania, aby wprowadzać datę w większym zakresie — nie dotyczy to jednak precyzji ułamkowej dla nanosekund.
Obsługa wyrażeń Typ danych rozszerzonej daty/godziny obsługuje funkcje agregujące języka SQL oraz ocenę wyrażeń. Przykładowo, używanie LoggedDateTime jako pola z typem danych rozszerzonej daty/godziny:
| Zadanie | Przykład | Wynik |
|---|---|---|
| Znajdowanie wartości minimalnej | Min(LoggedDateTime) | Najwcześniejsza data i godzina objęta zakresem |
| Wyodrębnianie miesiąca | Month(LoggedDateTime) | Nazwa miesiąca, na przykład styczeń |
| Dodawanie jednego dnia | [LoggedDateTime]+1 | Wtorek zmieniłby się na środę |
Uwagi dotyczące zgodności z poprzednimi wersjami
Typ danych rozszerzonej daty/godziny nie jest zgodny z poprzednimi wersjami programu Microsoft Access. Jeśli typ jest używany w lokalnej tabeli programu Access, wersje programu Access, które nie zawierają tej funkcji, nie będą mogły otworzyć bazy danych.
Typ danych rozszerzonej daty/godziny można włączyć lub wyłączyć na potrzeby operacji łączenia i importowania, używając opcji dostępu do bieżącej bazy danych. Obsługuj typ danych rozszerzonej daty/godziny dla tabel połączonych/lmported. Aby uzyskać więcej informacji, zobacz Ustawianie opcji użytkownika dla bieżącej bazy danych.
Używanie typu danych rozszerzonej daty/godziny jako ciągu znaków w VBA
W poniższych przykładach języka VBA są używane metody obiektu DAO w celu wyświetlania, wprowadzania i oceniania typu danych rozszerzonej daty/godziny na podstawie tabeli przedstawionej poniższej.
| IDENTYFIKATOR | DTEData | DTData |
|---|---|---|
| 1 | 1/1/2 1:01:03.1234567 | 1/1/2001 |
Nazwa tabeli: DTETable
Typ danych identyfikatora: Autonumerowanie
Typ danych DTEData: Rozszerzona data/godzina
Typ danych DTData: Data/godzina
Przykład: Wyświetlanie daty i godziny
Poniższy przykład wyświetla datę i godzinę. Używanym formatem jest mm/dd/rrrr gg:mm:ss.nnnnnnn w systemie 24-godzinnym. Formatu nie można dostosowywać.
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
Wynik Program Access wyświetla : 01/01/0002 01:01:03.1234567.
Przykład: Wprowadzanie daty i godziny
Poniższy przykład zapewnia wprowadzenie daty i godziny przy użyciu formatu ciągu znaków. Obsługiwane są wszystkie standardowe formaty daty i godziny.
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
Wynik Program Access doda nowy wiersz (ID = 2):
| IDENTYFIKATOR | DTEData | DTData |
|---|---|---|
| 1 | 1/1/2 1:01:03.1234567 | 1/1/2001 |
| 2 | 1/1/9999 1:01:01.0123000 | 1/1/2001 |
Przykład: Ocenianie wyrażenia zapytania
W poniższym przykładzie jest używana Funkcja Day, aby wyodrębnić numer dnia z pól daty i godziny.
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
Wynik Program Access wyświetla następujące informacje:
Dniem miesiąca jest: 1
Dniem miesiąca jest: 1
Funkcje działające z rozszerzoną datą/godziną w wyrażeniach kwerend
Z rozszerzoną datą/godziną w wyrażeniach kwerend działają następujące funkcje:
Rok, miesiąc, dzień tygodnia, dzień, godzina, minuta, sekunda, DateAdd, DateDiff i DatePart.
Ponadto istnieją wersje rozszerzone niektórych funkcji, które nie mogą użyć typu argumentu do określenia, że w wyniku obliczeń powinna zostać wyświetlona wartość rozszerzonej daty/godziny. Są one następujące:
DateValueExtended, TimeValueExtended, DateSerialExtended, TimeSerialExtended, NowExtended, DateExtended, DateTimeExtended i TimeExtended.
Te funkcje działają tak samo jak funkcja bez wyrazu "Extended" na końcu, ale zwraca wartość Date/Time Extended, a nie wartość daty/godziny.
Należy pamiętać, że język VBA nie został zmodyfikowany, nowe funkcje nie zostaną rozpoznane w kodzie języka VBA, a istniejące funkcje nie będą działać z wartościami rozszerzonej daty/godziny.
Przykład
Oryginalne zapytanie:
Select DateValue([OrderDate]) AS OrderDateOnly_DateValue
, Format([OrderDate],"Short Date") AS OrderDateOnly_Format
From tblOrders
Teraz zmień wartość DateValue([OrderDate]) na DateValueExtended([OrderDate]), co spowoduje naprawienie pierwszego wyrażenia.
Należy zauważyć, że program Access nie obsługuje funkcji Format dla kolumn rozszerzonej daty/godziny. wystarczy ustawić właściwość Format dla kolumny.
W związku z tym, jeśli użyjesz następujących funkcji:
SELECT DateValueExtended([OrderDate]) AS OrderDateOnly_DateValue, Table1.OrderDate
FROM Table1;
Ustaw właściwość Format dla drugiej kolumny na wartość "Data krótka", aby uzyskać żądane wyniki.
Zobacz też
Wprowadzenie do typów danych i właściwości pól