Używanie typu danych rozszerzonej daty/godziny

Dotyczy
Access dla Microsoft 365 Access 2024 Access 2021

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żenieo rozszerzonym zakresie daty/godziny Podczas tworzenia wyrażeń i używania funkcji daty/godziny opartych na typie danych rozszerzonej daty/godziny w programie Access możesz utracić dokładność obliczeń lub napotkać inne problemy z wynikami. 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 Używanie typu danych rozszerzonej daty/godziny Zagadnienia dotyczące zgodności z poprzednimi wersjami Używanie typu danych rozszerzonej daty/godziny jako ciągu znaków w VBA

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

Początek strony

Używanie typu danych rozszerzonej daty/godziny

Poniższe informacje opisują istotne zagadnienia dotyczące użycia.

Widok projektu tabeli Aby korzystać z większego zakresu danych i większej precyzji, możesz dodać 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 typu danych Data/Godzina, z tym że można również wprowadzić ułamkową nanosekundę. 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 sterować wyświetlaniem ułamków nanosekund, otwórz tabelę, na wstążce wybierz pozycję Pola, a następnie w grupie Formatowanie wybierz pozycję Zwiększ liczbę miejsc dziesiętnych , obraz przycisku lub Przycisk Zmniejsz liczbę miejsc dziesiętnych.

Formatowania Zarówno typy danych data/godzina, jak i rozszerzona data/godzina używają podobnych standardowych ciągów formatowania daty ogólnej, daty długiej, daty średniej, daty krótkiej, godziny długiej, godziny średniej i godziny krótkiej , a 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żesz również tworzyć połączenia z bazami danych lub importować z nimi, korzystając z odpowiedniego typu danych, na przykład SQL Server typu danych datetime2. 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 firmy Microsoft 13.1 do SQL Server. Obsługiwane jest również korzystanie z bazy danych OLE. Aby uzyskać więcej informacji, zobacz Obsługa typu danych dla ulepszeń daty i godziny ODBC oraz Korzystanie z ulepszonych funkcji daty i godziny (OLE DB).

Formularze i raporty Typ danych Rozszerzona data/godzina można dodać do formularza lub raportu. 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 sql i obliczanie 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ę

Początek strony

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 Rozszerzona data/godzina można włączyć lub wyłączyć na potrzeby operacji łączenia i importowania za pomocą opcji Bieżący dostęp do bazy danychObsługuj rozszerzony typ danych data/godzina dla tabel połączonych/lmportowanych. Aby uzyskać więcej informacji, zobacz Ustawianie opcji użytkownika dla bieżącej bazy danych.

Początek strony

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 Identyfikator: 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 Zostanie wyświetlony program Access: 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świetli:

Dzień miesiąca to: 1
Dzień miesiąca to: 1

Funkcje współpracujące z rozszerzoną datą/godziną w wyrażeniach zapytań

Następujące funkcje działają z rozszerzoną datą/godziną w wyrażeniach zapytań:
​​​​​​​
Year, Month, Weekday, Day, Hour, Minute, Second, DateAdd, DateDiff i DatePart.

Ponadto istnieją wersje rozszerzone niektórych funkcji, które nie mogą używać typu argumentu do określenia, że obliczenie powinno spowodować uzyskanie wartości rozszerzonej daty/godziny. Są one następujące:

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

Te funkcje działają tak samo jak funkcje bez parametru "Rozszerzone" na końcu, ale zwracają wartość rozszerzoną daty/godziny, a nie wartość typu Data/godzina.

Zwróć uwagę, ż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 rozszerzonymi 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([DataZamówienia]) na DateValueExtended([DataZamówienia]), co spowoduje naprawienie pierwszego wyrażenia.

Należy pamiętać, że program Access nie obsługuje funkcji Format dla kolumn rozszerzonych daty/godziny. Możesz po prostu ustawić właściwość Format dla kolumny.

W związku z tym, jeśli używasz:


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

FROM Table1;

Następnie ustaw właściwość Format dla drugiej kolumny na wartość "Data krótka", a zostaną wyświetlone odpowiednie wyniki.

Początek strony

Zobacz też

Wprowadzenie do typów danych i właściwości pól

Formatowanie pola daty i godziny

Tworzenie lub usuwanie pola daty i godziny