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
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
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 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
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ę |
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.
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.
Zobacz też
Wprowadzenie do typów danych i właściwości pól