Tipul de date Dată/Oră extins stochează informații despre dată și oră și este similar cu tipul de date Dată/Oră, dar furnizează un interval de date mai mare, o precizie fracțională mai mare și o compatibilitate cu tipul de dată dată/oră din SQL Server. Atunci când importați sau legați date Access la SQL Server, puteți mapa în mod unitar un câmp dată/oră Access extins la o coloană dată/oră din SQL Server2. Pentru mai multe informații, consultați datetime2 (Transact-SQL).
Avertisment
Atunci când creați expresii și utilizați funcții de dată/oră bazate pe tipul de date Dată/Oră extins în Access, este posibil să pierdeți precizia în calcule sau să întâmpinați alte probleme cu rezultatele. Cunoaștem această problemă și planificăm să acceptăm mai bine expresiile și funcțiile într-o ediție viitoare. Ca soluție, puteți crea o interogare directă pentru a utiliza expresia SQL Server echivalentă și funcțiile dată/oră. Pentru mai multe informații, consultați Compararea Access SQL cu SQL Server TSQL.
În acest articol
| Compararea tipurilor de date Dată/Oră și Dată/Oră extinse | Utilizarea tipului de date extinse dată/oră | Considerente de compatibilitate inversă | Utilizarea tipului de date extinse dată/oră ca șir în VBA |
|---|
Compararea tipurilor de date Dată/Oră și Dată/Oră extinse
Următoarele tabele rezumă diferențele importante dintre cele două tipuri de date.
| Atribut | Dată/Oră | Dată/Oră extinsă |
|---|---|---|
| Valoarea minimă | 100-01-01 00:00:00 | 0001-01-01 00:00:00 |
| Valoarea maximă | 9999-12-31 23:59:59.999 | 9999-12-31 23:59:59.9999999 |
| Acuratețe | 0,001 secunde | 1 nanosecundă |
| Dimensiune | Virgulă mobilă cu dublă precizie | Șir codificat de 42 de octeți |
Utilizarea tipului de date extinse dată/oră
Informațiile următoare descriu considerații importante privind utilizarea.
Table Design View Pentru a profita de o zonă mai mare de date și de o precizie mai mare, aveți posibilitatea să adăugați un câmp într-un tabel Access. De asemenea, puteți efectua conversia unui tip de date Dată/Oră în Dată/Oră extinsă în vizualizarea Proiectare tabel. De asemenea, este acceptată utilizarea acestui tip de date drept câmp cheie primară. Pentru mai multe informații, consultați Crearea unui tabel și adăugarea câmpurilor.
Introducerea datei și a orei Introducerea valorilor dată și oră este similară cu tipul de date Dată/Oră, cu excepția faptului că puteți introduce și o fracțiune de nanosecundă. De exemplu:
- Format intrare: zz/ll/aaa hh:mm:ss.nnnnnnn
- Exemplu: 15.06.1215 09:25:3.234
Dacă există mai mult de 7 fracționari de nanosecunde, acestea sunt rotunjite la 7 cifre. Pentru a controla afișarea nanosecundelor fracționare, deschideți Tabelul, pe panglică selectați Câmpuri, iar în grupul Formatare, selectați Imagine
Mărire zecimale sau Micșorare zecimale
Formatare Atât tipurile de date Dată/Oră, cât și Dată/Oră extinsă utilizează șiruri de formatare standard similare Dată generală, Dată lungă, Dată medie, Dată scurtă, Oră lungă, Oră medie și Oră scurtă și ambele acceptă formatare particularizată. Pentru tipul de date Dată/Oră extins, formatele standard bazate pe timp acceptă, de asemenea, precizia fracționară pentru nanosecunde. Formatarea tipului de date extins dată/oră este implicită la formatele Dată generală și Oră lungă și urmează opțiunile specificate în setările regionale Windows. De asemenea, puteți controla formatarea preciziei fracționare utilizând proprietatea Decimal Places pentru a specifica numărul de cifre de la dreapta virgulei zecimale (1-7).
Legarea și importul De asemenea, puteți să creați o legătură sau să importați din baze de date cu un tip de date corespunzător, cum ar fi tipul de date dată și oră SQL Server2. Bazele de date SQL Server versiunea 2014 sau mai recente sunt acceptate. Tipul de date Dată/Oră extins necesită utilizarea Driverului Microsoft ODBC pentru SQL Server 11 sau o versiune mai recentă. Vă recomandăm să utilizați Driverul Microsoft ODBC 13.1 pentru SQL Server. De asemenea, este acceptată utilizarea OLE DB. Pentru mai multe informații, consultați Suportul pentru tipurile de date pentru îmbunătățiri ale datei și orei ODBC și Utilizarea caracteristicilor îmbunătățite pentru dată și oră (OLE DB).
Formulare și rapoarte Puteți adăuga tipul de date Dată/Oră extinsă la un formular sau raport. Într-un formular, puteți utiliza selectorul de dată și masca de intrare pentru a introduce o dată cu intervalul mai mare, dar nu și precizia fracționară pentru nanosecunde.
Expression Support Tipul de date extins dată/oră acceptă funcțiile agregate SQL și evaluarea expresiilor. De exemplu, utilizând LoggedDateTime drept câmp cu tipul de date Dată/Oră extins:
| Activitate | Exemplu | Rezultat |
|---|---|---|
| Găsirea valorii minime | Min(LoggedDateTime) | Cea mai veche dată și oră din interval |
| Extragerea lunii | Month(LoggedDateTime) | Numele lunii, cum ar fi ianuarie |
| Adăugați o zi | [LoggedDateTime]+1 | Marți ar deveni miercuri |
Considerente de compatibilitate inversă
Tipul de date extins dată/oră nu este compatibil cu versiunile anterioare de Microsoft Access. Dacă tipul este utilizat într-un tabel Access local, versiunile de Access care nu includ caracteristica nu vor deschide baza de date.
Puteți activa sau dezactiva tipul de date extins dată/oră pentru operațiuni de legare și de import cu opțiunea Current DatabaseAccess Tip de date extins dată/oră pentru tabelele legate/portate. Pentru mai multe informații, consultați Setarea opțiunilor de utilizator pentru baza de date curentă.
Utilizarea tipului de date extinse dată/oră ca șir în VBA
Următoarele exemple VBA utilizează metode DAO pentru a afișa, a introduce și a evalua tipul de date extinse dată/oră pe baza tabelului de mai jos.
| ID | DTEData | DTData |
|---|---|---|
| 1 | 01/01/2 01:01:03.1234567 | 1/01/2001 |
Nume tabel: DTETable
Tipul de date ID: Numerotare automată
Tipul de date DTEData: Dată/Oră extinsă
Tipul de date DTData: Data/Ora
Exemplu: Afișarea datei și orei
Următorul exemplu afișează data și ora. Formatul utilizat este ll/zz/aaaa hh:mm:ss.nnnnnnn în formatul de 24 de ore. Formatul nu este particularizabil.
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
Rezultat Afișaje Access: 01/01/0002 01:01:03.1234567.
Exemplu: Introducerea datei și a orei
Următorul exemplu introduce data și ora utilizând un format de șir. Sunt acceptate toate formatele standard de dată și oră.
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
Rezultat Access adaugă un rând nou (ID = 2):
| ID | DTEData | DTData |
|---|---|---|
| 1 | 01/01/2 01:01:03.1234567 | 1/01/2001 |
| 2 | 01.01.9999 01:01.0123000 | 1/01/2001 |
Exemplu: Evaluarea unei expresii de interogare
Următorul exemplu utilizează funcția Day pentru a extrage numărul zilei din câmpurile de dată și oră.
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
Rezultat Afișaje Access:
Ziua din lună este: 1
Ziua din lună este: 1
Funcții care funcționează cu Dată/Oră extinsă în expresiile de interogare
Următoarele funcții funcționează cu funcția Dată/Oră extinsă în expresii de interogare:
An, Lună, Zi lucrătoare, Zi, Oră, Minut, Secundă, DateAdd, DateDiff și DatePart.
În plus, există versiuni extinse ale unor funcții care nu pot utiliza tipul de argument pentru a determina că acest calcul ar trebui să producă o valoare extinsă dată/oră. Acestea sunt:
DateValueExtended, TimeValueExtended, DateSerialExtended, TimeSerialExtended, NowExtended, DateExtended, DateTimeExtended și TimeExtended.
Aceste funcții funcționează la fel ca funcția fără "Extins" la sfârșit, dar returnează o valoare Dată/Oră extinsă, mai degrabă decât o valoare Dată/Oră.
Rețineți că VBA nu a fost modificat, noile funcții nu vor fi recunoscute în codul VBA și funcțiile existente nu vor funcționa cu valori extinse de tip dată/oră.
Exemplu
Interogarea inițială:
Select DateValue([OrderDate]) AS OrderDateOnly_DateValue
, Format([OrderDate],"Short Date") AS OrderDateOnly_Format
From tblOrders
Acum, modificați DateValue([OrderDate]) în DateValueExtended([OrderDate]), ceea ce va remedia prima expresie.
Rețineți că Access nu gestionează funcția Format pentru coloanele Dată/Oră extinse; puteți seta pur și simplu proprietatea Format pentru coloană.
Prin urmare, dacă utilizați:
SELECT DateValueExtended([OrderDate]) AS OrderDateOnly_DateValue, Table1.OrderDate
FROM Table1;
Și setați proprietatea Format pentru a doua coloană la "Dată scurtă" și veți obține rezultatele dorite.
Consultați și
Introducere în tipurile de date și proprietățile câmpurilor