Använd den utökade datatypen Datum/Tid

Gäller för
Access för Microsoft 365 Access 2024 Access 2021

Datatypen utökad Datum och tid lagrar information om datum och tid och liknar Datum/tid-datatyp, men den ger ett större datumintervall, en högre fraktionell precision och kompatibilitet med datatypen SQL Server datetime2. När du importerar eller länkar Access-data till SQL Server kan du på ett konsekvent sätt mappa ett Access Datum och tid utökad fält till en SQL Server-datetime2. Mer information finns i datetime2 (Transact-SQL).

Varning fördatum/tid utökat intervall När du skapar uttryck och använder datum-/tidsfunktioner baserade på den utökade datatypen Datum/tid i Access kan du förlora precisionen i beräkningar eller stöta på andra problem med resultatet. Vi är medvetna om problemet och planerar att förbättra supportuttryck och funktioner i en kommande version. Som en lösning kan du Skapa en direktfråga om du vill använda motsvarande SQL Server-uttryck och datum/tid-funktioner. Mer information finns i Jämförelse av SQL i Access med T-SQL för SQL Server.

Artikelinnehåll

Jämför datatyperna datum/tid och datum och tid utökad Använd den utökade datatypen Datum/Tid Överväganden för bakåtkompatibilitet Använd den utökade datatypen Datum/Tid som en sträng i VBA

Jämför datatyperna datum/tid och datum och tid utökad

I följande tabeller sammanfattas viktiga skillnader mellan de två datatyperna.

Attribut Datum/tid Datum och tid utökad
Minvärde 100-01-01 00:00:00 0001-01-01 00:00:00
Maxvärde 9999-12-31 23:59:59.999 9999-12-31 23:59:59.9999999
Noggrannhet 0.001 sekunder 1 nanosekund
Storlek Flytande punkt med dubbel precision Kodad sträng med 42 byte

Överst på sidan

Använd den utökade datatypen Datum/Tid

Följande information beskriver viktiga användningsfaktorer.

Tabelldesignvy Om du vill dra nytta av det större dataområdet och högre precision kan du lägga till ett fält i en Access-tabell. Du kan också konvertera ett datum/tid till datum/tid utökad för datum/tid i designvy för tabell. Du kan också använda den här datatypen som ett primärt nyckelfält. Mer information finns på Skapa en tabell och lägg till fält.

Ange datum och tid Att ange datum- och tidsvärden påminner om datatypen Datum/tid, förutom att du också kan ange en decimal nanosekont. Till exempel:

  • Format: mm/dd/åååå hh:mm:ss.nnnnnnn
  • Exempel: 06/15/1215 09:25:3.234

Om det finns fler än sju fraktionella nanosekunder avrundas de till sju siffror. Om du vill styra visningen av decimaler i nanosekunder öppnar du Tabellen, väljer Fält i menyfliksområdet och väljer sedan Knappen Öka decimaler eller Knappen Minska decimaler i gruppen Formatering.

Formatering Både de utökade datatyperna Datum/tid och Datum/tid använder liknande standardformateringssträngar för Allmänt datum, Långt datum, Medellångt datum, Kort datum, Lång tid, Medeltid och Kort tid och båda har stöd för anpassad formatering. För datatypen Datum/tid utökad stöds även tidsbaserade standardformatering av decimal precision för nanosekunder. Formatering av den datum och tid utökad används som standard för formaten Allmänt datum och Lång tid och följer de alternativ som anges i Windows nationella inställningar. Du kan också kontrollera formateringen av decimaltal genom att använda egenskapen Antal decimaler för att ange antalet siffror till höger om decimaltecknet (1-7).

Länka och importera Du kan också länka till eller importera från databaser med en motsvarande datatyp, till exempel datatypen SQL Server datetime2. SQL Server version 2014 eller senare databaser stöds. Den datatypen Datum och tid utökad Datum/tid kräver användningen av Microsoft ODBC-drivrutin för SQL Server 11 eller senare. Vi rekommenderar att du använder Microsoft ODBC Driver 13.1 för SQL Server. Det går också att använda OLE DB. Mer information finns i Stöd för datatyper för ODBC-datum- och tidsförbättringar och Använda utökade datum- och tidsfunktioner (OLE DB).

Formulär och rapporter Du kan lägga till den utökade datatypen Datum/tid i ett formulär eller en rapport. I ett formulär kan du använda datumväljaren och indatamasken för att ange ett datum med det större området, men inte decimalprecisionen för nanosekunder.

Stöd för uttryck Den utökade datatypen Datum/tid stöder SQL-mängdfunktioner och uttrycksutvärdering. Om du till exempel använder LoggedDateTime som ett fält med den datatypen Datum och tid utökad:

Uppgift Exempel Resultat
Hitta det minsta värdet Min(LoggedDateTime) Tidigaste datum och tid inom intervallet
Extrahera månaden Månad(LoggedDateTime) Månadsnamnet, t. ex. januari
Lägg till en dag [LoggedDateTime]+1 Tisdag blir onsdag

Överst på sidan

Överväganden för bakåtkompatibilitet

Den datatypen Datum och tid utökad är inte kompatibel med tidigare versioner av Microsoft Access. Om typen används i en lokal Access-tabell kommer versioner av Access som inte innehåller funktionen inte att kunna öppna databasen.

Du kan aktivera eller inaktivera den utökade datatypen Datum/tid för länknings- och importåtgärder med alternativet Aktuell databasåtkomstSupportdatum/tid utökad datatyp för länkade/lmporterade tabeller. Mer information finns i artikeln för att ange användaralternativ för den aktuella databasen.

Överst på sidan

Använd den utökade datatypen Datum/Tid som en sträng i VBA

I följande VBA-exempel används DAO-metoder för att visa, ange och utvärdera den utökade datatypen Datum/Tid baserat på tabellen nedan.

ID DTEData DTData
1 1/1/2 1:01:03.1234567 AM 1/1/2001

Tabellnamn: DTETable
ID-datatyp: Räknare
DTEData-datatyp: Datum/tid utökad
DTData-datatyp: Datum/tid

Exempel: Visa datum och tid

I följande exempel visas datum och tid. Formatet som används är åååå-mm-dd tt: mm: SS. nnnnnnn i 24-timmarsformat. Formatet är inte anpassningsbart.


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

Resultatet Access visar: 01/01/0002 01:01:03.1234567.

Exempel: Ange till datum och tid

Följande exempel anger datum och tid i ett strängformat. Alla standard datum-och tidsformat stöds.


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

Resultatet Access lägger till en ny rad (ID = 2):

ID DTEData DTData
1 1/1/2 1:01:03.1234567 AM 1/1/2001
2 1/1/9999 1:01:01.0123000 AM 1/1/2001

Exempel: Utvärdera ett frågeuttryck

I följande exempel används funktionen Dag för att extrahera dagnumret från fälten datum och tid.


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

Resultatet Access visar:

Dagen i månaden är: 1
Dagen i månaden är: 1

Funktioner som fungerar med Datum/tid utökat i frågeuttryck

Följande funktioner fungerar med Datum/tid utökat i frågeuttryck:
​​​​​​​
År, Månad, Veckodag, Dag, Timme, Minut, Andra, DatumLägg Till, DatumDiff och DatumDel.

Det finns dessutom utökade versioner av vissa funktioner som inte kan använda typen av argument för att avgöra att beräkningen ska ge ett utökat värde för datum/tid. Till exempel:

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

De här funktionerna fungerar på samma sätt som funktionen utan "Utökad" i slutet, men returnerar ett utökat datum/tid-värde i stället för ett datum-/tidsvärde.

Observera att VBA inte har ändrats, att de nya funktionerna inte identifieras i VBA-kod och att de befintliga funktionerna inte fungerar med utökade värden för datum/tid.

Exempel

Ursprunglig fråga:


Select DateValue([OrderDate]) AS OrderDateOnly_DateValue

, Format([OrderDate],"Short Date") AS OrderDateOnly_Format

From tblOrders

Ändra datumvärde([Orderdatum]) till DateValueExtended([OrderDate]), som korrigerar det första uttrycket.

Observera att Access inte hanterar funktionen Format för utökade datum-/tidskolumner. du kan bara ange egenskapen Format för kolumnen.

Om du använder:


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

FROM Table1;

Och ange egenskapen Format för den andra kolumnen till "Kort datum", så får du de resultat du vill ha.

Överst på sidan

Se även

Introduktion till datatyper och fältegenskaper

Formatera ett fält av typen Datum och tid

Skapa eller ta bort ett fält av typen Datum och tid