Utilizarea tipului de date extinse dată/oră

Se aplică la
Access pentru Microsoft 365 Access 2024 Access 2021

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).

Avertismentprivind intervalul extins Dată/Oră 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

Începutul paginii

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 butonMărire zecimale sau Micșorare zecimaleImagine buton .

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

Începutul paginii

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ă.

Începutul paginii

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.

Începutul paginii

Consultați și

Introducere în tipurile de date și proprietățile câmpurilor

Formatarea unui câmp dată și oră

Crearea sau ștergerea unui câmp dată și oră