Datový typ Rozšířené datum a čas ukládá informace o datu a času a je podobný datovému typu Datum a čas, ale nabízí větší rozsah kalendářních dat, vyšší desetinnou přesnost a kompatibilitu s datovým typem datetime2 SQL Serveru. Po importu nebo propojení dat z Accessu se SQL Serverem můžete konzistentně namapovat pole Rozšířené datum a čas v Accessu na sloupec datetime2 SQL Serveru. Další informace najdete v tématu datetime2 (Transact-SQL).
Upozornění : Když v Accessu vytvoříte výrazy a použijete funkce data a času založené na datovém typu Rozšířené datum a čas, může dojít ke ztrátě přesnosti výpočtů nebo k jiným problémům s výsledky. O tomto problému víme a v nadcházející verzi plánujeme vylepšit podporu výrazů a funkcí. Tento problém můžete obejít tak, že vytvoříte předávací dotaz, aby bylo možné použít odpovídající výraz a funkce data a času SQL Serveru. Další informace najdete v článku Porovnání Accessového SQL s SQL Serverem TSQL.
V tomto článku
Porovnání datových typů Datum a čas a Rozšířené datum a čas
V následující tabulce najdete souhrn důležitých rozdílů mezi těmito dvěma datovými typy.
| Atribut | Datum a čas | Rozšířené datum a čas |
|---|---|---|
| Minimální hodnota | 100-01-01 00:00:00 | 0001-01-01 00:00:00 |
| Maximální hodnota | 9999-12-31 23:59:59,999 | 9999-12-31 23:59:59,9999999 |
| Přesnost | 0,001 sekundy | 1 nanosekunda |
| Velikost | Číslo s plovoucí desetinnou čárkou s dvojitou přesností | Kódovaný řetězec 42 bajtů |
Používání datového typu Rozšířené datum a čas
Následující informace popisují důležité aspekty používání.
Návrhové zobrazení tabulky Pokud chcete využít větší rozsah dat a vyšší přesnost, můžete do accessové tabulky přidat pole. Můžete také převést datový typ Datum a čas na Rozšířené datum a čas v návrhovém zobrazení tabulky. Tento datový typ také můžete použít jako pole primárního klíče. Další informace najdete v článku Vytvoření tabulky a přidání polí.
Zadání data a času Zadávání hodnot data a času se podobá datovému typu Datum a čas s tím rozdílem, že můžete také zadat zlomek nanosekundy. Příklad:
- Formát zadávání: dd/mm/rrrr hh: mm:ss,nnnnnnn
- Příklad: 15/06/1215 09:25:3,234
Pokud počet desetinných míst u nanosekund přesahuje 7, zaokrouhlí se na 7 číslic. Pokud chcete řídit zobrazení zlomkových nanosekund, otevřete tabulku, na pásu karet vyberte Pole a ve skupině Formátování vyberte
Zvětšit desetinná místa nebo
Zmenšit desetinná místa.
Formátování Datové typy Datum a čas a Rozšířené datum a čas používají podobné standardní formátovací řetězce : Obecné datum, Dlouhé datum, Střední datum, Krátké datum, Dlouhý čas, Střední čas a Krátký čas a oba podporují vlastní formátování. U datového typu Rozšířené datum a čas standardní formáty založené na čase také podporují desetinnou přesnost pro nanosekundy. Při formátování datového typu Rozšířené datum a čas se ve výchozím nastavení používají formáty Datum (obecné) a Čas (dlouhý) a také možnosti zadané v místním nastavení Windows. Můžete také nastavit formátování desetinné přesnosti pomocí vlastnosti Počet desetinných míst, která umožňuje zadat počet číslic napravo od desetinné čárky (1–7).
Propojení a import Můžete také propojit nebo importovat databáze s odpovídajícím datovým typem, například datový typ SQL Server datetime2. Podporují se databáze SQL Serveru verze 2014 nebo novější. Datový typ Rozšířené datum a čas vyžaduje používání ovladače Microsoft ODBC pro SQL Server 11 nebo novější. Pro SQL Server doporučujeme použít Ovladač Microsoft ODBC 13.1. Podporuje se také technologie OLE DB. Další informace najdete v tématech Podpora datových typů pro vylepšení data a času ODBC a Použití rozšířených funkcí pro datum a čas (OLE DB).
Formuláře a sestavy Do formuláře nebo sestavy můžete přidat datový typ Rozšířené datum a čas. Ve formuláři můžete použít výběr data a vstupní masku k zadání data s větším rozsahem, ale není možné použít desetinnou přesnost pro nanosekundy.
Podpora výrazů Datový typ Rozšířené datum a čas podporuje agregační funkce SQL a vyhodnocení výrazů. Například použití LoggedDateTime jako pole s datovým typem Rozšířené datum a čas:
| Úloha | Příklad | Výsledek |
|---|---|---|
| Vyhledání minimální hodnoty | Min(LoggedDateTime) | Nejdřívější datum a čas v rozsahu |
| Extrahování měsíce | Month(LoggedDateTime) | Název měsíce, například leden |
| Přidání jednoho dne | [LoggedDateTime]+1 | Úterý se změní na středu. |
Důležité informace o zpětné kompatibilitě
Datový typ Rozšířené datum a čas není kompatibilní s předchozími verzemi Microsoft Accessu. Pokud se typ používá v místní tabulce Accessu, verze Accessu, které tuto funkci neobsahují, nebudou moct databázi otevřít.
Můžete povolit nebo zakázat datový typ Rozšířené datum a čas pro operace propojení a importu s možností aktuálního přístupu k databáziPodpora rozšířeného datového typu datum a čas pro propojené nebo propojené tabulky. Další informace najdete v článku Nastavení možností uživatele pro aktuální databázi.
Používání datového typu Rozšířené datum a čas jako řetězce ve VBA
V následujících příkladech jazyka VBA se používají metody DAO, které slouží k zobrazení, zadání a vyhodnocení datového typu Rozšířené datum a čas podle následující tabulky.
| ID | DTEData | DTData |
|---|---|---|
| 1 | 1/1/2 1:01:03,1234567 | 1/1/2001 |
Název tabulky: Tabulka DTE
Datový typ ID: Automatické číslování
Datový typ DTEData: Datum a čas prodloužení
Datový typ DTData: Datum a čas
Příklad: Zobrazení data a času
V následujícím příkladu se zobrazuje datum a čas. Používá se dd/mm/yyyy hh:mm:ss,nnnnnnn ve 24hodinovém formátu. Tento formát se nedá přizpůsobit.
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
Výsledek Access zobrazí: 01/01/0002 01:01:03.1234567.
Příklad: Zadání data a času
V následujícím příkladu se k zadání data a času používá řetězcový formát. Podporují se všechny standardní formáty data a času.
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
Výsledek Access přidá nový řádek (ID = 2):
| ID | DTEData | DTData |
|---|---|---|
| 1 | 1/1/2 1:01:03,1234567 | 1/1/2001 |
| 2 | 1/1/9999 1:01:01,0123000 | 1/1/2001 |
Příklad: Vyhodnocení výrazu dotazu
V následujícím příkladu se funkce Day použije k extrahování čísla dne z polí data a času.
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
Výsledek Access zobrazí:
Den v měsíci je: 1
Den v měsíci je: 1
Funkce, které pracují s rozšířeným datem a časem ve výrazech dotazu
Následující funkce fungují s rozšířeným datem a časem ve výrazech dotazu:
Rok, Měsíc, Den v týdnu, Den, Hodina, Minuta, Druhý, DateAdd, DateDiff a DatePart.
Kromě toho existují rozšířené verze některých funkcí, které nemůžou použít typ argumentu k určení, že by výpočet měl vytvořit rozšířenou hodnotu data a času. Jsou to:
DateValueExtended, TimeValueExtended, DateSerialExtended, TimeSerialExtended, NowExtended, DateExtended, DateTimeExtended a TimeExtended.
Tyto funkce fungují stejně jako funkce bez rozšířené na konci, ale místo hodnoty Datum a čas vrací rozšířenou hodnotu data a času.
Všimněte si, že jazyk VBA nebyl změněn, nové funkce nebudou v kódu jazyka VBA rozpoznány a stávající funkce nebudou fungovat s rozšířenými hodnotami data a času.
Příklad
Původní dotaz:
Select DateValue([OrderDate]) AS OrderDateOnly_DateValue
, Format([OrderDate],"Short Date") AS OrderDateOnly_Format
From tblOrders
Teď změňte DateValue([OrderDate]) na DateValueExtended([OrderDate]), čímž opravíte první výraz.
Všimněte si, že Access nezpracuje funkci Format pro rozšířené sloupce data a času; stačí nastavit vlastnost Format pro sloupec.
Proto pokud používáte:
SELECT DateValueExtended([OrderDate]) AS OrderDateOnly_DateValue, Table1.OrderDate
FROM Table1;
A nastavte vlastnost Format pro druhý sloupec na "Krátké datum", dostanete požadované výsledky.