Speichern, Berechnen und Vergleichen von Datum/Uhrzeit-Daten in Microsoft Access

Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
210276 How to store, calculate, and compare Date/Time data in Microsoft Access

In Artikel 130514 wird dieses Thema für Microsoft Access 97 behandelt.

Moderat: Erfordert grundlegende Kenntnisse in den Bereichen Makros, Codierung und Interoperabilität.

Zusammenfassung

In diesem Artikel wird beschrieben, wie Microsoft Access den Dateityp für Datum/Uhrzeit speichert. Außerdem wird beschrieben, warum Sie unter Umständen unerwartete Ergebnisse erhalten, wenn Sie Datums- und Uhrzeitangaben berechnen oder vergleichen.

In diesem Artikel werden die folgenden Themen behandelt:

  • Speichern von Datum/Uhrzeit

  • Formatieren eines Datum/Uhrzeit-Feldes

  • Berechnen von Uhrzeitdaten

  • Vergleichen von Datumsdaten

  • Vergleichen von Uhrzeitdaten

Weitere Informationen

Speichern von Datum/Uhrzeit

Access speichert den Datentyp für Datum/Uhrzeit als Gleitkommazahl mit doppelter Genauigkeit mit bis zu 15 Dezimalstellen. Der Ganzzahlteil der Zahl mit doppelter Genauigkeit stellt das Datum dar. Der Dezimalteil stellt die Uhrzeit dar.

Gültige Datumswerte reichen von -657.434 (1. Januar 100 n.Chr.) bis 2.958.465 (31. Dezember 9999 n.Chr.). Ein Datumswert von 0 steht für den 30. Dezember 1899. Access speichert Datumsangaben vor dem 30. Dezember 1899 als negative Zahlen.

Gültige Uhrzeitwerte reichen von .0 (00:00:00) bis .99999 (23:59:59). Der numerische Wert stellt einen Bruchwert von einem Tag dar. Sie können den numerischen Wert in Stunden, in Minuten und in Sekunden umwandeln, indem Sie den numerischen Wert mit 24 multiplizieren.

In der folgenden Tabelle wird dargestellt, wie Datum/Uhrzeit-Werte in Access gespeichert werden:
Double Date Actual Time Actual
number portion date portion time
------------------------------------------------------------------

1.0 1 December 31, 1899 .0 12:00:00 A.M.
2.5 2 January 1, 1900 .5 12:00:00 P.M.
27468.96875 27468 March 15, 1975 .96875 11:15:00 P.M.
36836.125 36836 November 6, 2000 .125 3:00:00 A.M.
Um anzuzeigen, wie Access Datum/Uhrzeit-Werte als Zahlen speichert, geben Sie folgenden Befehl in das Direktfenster ein, und drücken Sie dann die [EINGABETASTE]. Anschließend sehen Sie die Ergebnisse:

?CDbl(#5/18/1999 14:00:00#) Das Ergebnis: 36298.5833333333

?CDbl(#12/14/1849 17:32:00#) Das Ergebnis: -18278.7305555556

Um das Datum und die Uhrzeit als numerische Werte anzuzeigen, geben Sie die folgenden Befehle in das Direktfenster ein, und drücken Sie dann die [EINGABETASTE]. Anschließend sehen Sie die Ergebnisse:

?CVDate(1.375) Das Ergebnis: 12/31/1899 9:00:00 AM

?CVDate(-304398.575) Das Ergebnis: 8/1/1066 1:48:00 PM

Formatieren eines Datum/Uhrzeit-Feldes

Sie können einen Datum/Uhrzeit-Wert so formatieren, dass ein Datum, eine Uhrzeit oder beides angezeigt wird. Wenn Sie ein reines Datumsformat verwenden, speichert Access einen Wert von 0 für den Uhrzeitteil. Wenn Sie ein reines Uhrzeitformat verwenden, speichert Access einen Wert von 0 für den Datumsteil.

In der folgenden Tabelle wird dargestellt, wie Datum/Uhrzeit-Werte in Access gespeichert werden. Die folgende Tabelle zeigt außerdem, wie Sie diese Werte mithilfe verschiedener Formate anzeigen können:
Stored value Default format Custom format
(double number) (General Date) (mm/dd/yyyy hh:nn:ss A.M./P.M.)
---------------------------------------------------------------------

36295.0 5/15/99 05/15/1999 12:00:00 AM
0.546527777777778 1:07 PM 12/30/1899 01:07:00 PM
36232.9375 3/13/99 10:30PM 03/13/1999 10:30:00 PM
Hinweis: Das Standardformat für einen Datum/Uhrzeit-Wert ist "Standarddatum". Wenn ein Wert nur das Datum enthält, wird keine Uhrzeit angezeigt. Wenn der Wert nur die Uhrzeit enthält, wird kein Datum angezeigt.

Berechnen von Uhrzeitdaten

Da ein Zeitwert als Bruchzahl eines 24-Stunden-Tages gespeichert wird, erhalten Sie unter Umständen falsche Formatierungsergebnisse, wenn Sie Zeitintervalle berechnen, die 24 Stunden übersteigen. Um dieses Verhalten zu umgehen, können Sie eine benutzerdefinierte Funktion erstellen, um sicherzugehen, dass Zeitintervalle ordnungsgemäß formatiert werden.

Die Verwendung der hier aufgeführten Informationen, Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. In diesem Artikel wird vorausgesetzt, dass Sie mit der in den Beispielen verwendeten Programmiersprache und mit den zum Erstellen und Debuggen von Prozeduren verwendeten Tools vertraut sind. Die Spezialisten von Microsoft Support Services können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, jedoch werden sie diese Beispiele nicht in Bezug auf eine erweiterte Funktionalität verändern, noch werden sie Prozeduren entwickeln, die auf Ihre besonderen Bedürfnisse zugeschnitten sind. Gehen Sie folgendermaßen vor, um Zeitintervalle richtig zu berechnen und zu formatieren:

  1. Erstellen Sie ein Modul, und geben Sie die folgende Zeile in den Deklarationsbereich ein (falls die Zeile noch nicht angezeigt wird):

    Option Explicit
  2. Geben Sie folgende Prozedur ein:

    '------------------------------------------------------------------
    ' This function calculates the elapsed time between two values and then
    ' formats the result in four different ways.
    '
    ' The function accepts interval arguments such as the following:
    '
    ' #5/12/95 6:00:00AM# - #5/11/95 10:00:00PM#
    '
    '
    '
    ' [End Time]-[Start Time]
    '------------------------------------------------------------------

    Function ElapsedTime (Interval)
    Dim x
    x = Int(CSng(Interval * 24 * 3600)) & " Seconds"
    Debug.Print x
    x = Int(CSng(Interval * 24 * 60)) & ":" & Format(Interval, "ss") _
    & " Minutes:Seconds"
    Debug.Print x
    x = Int(CSng(Interval * 24)) & ":" & Format(Interval, "nn:ss") _
    & " Hours:Minutes:Seconds"
    Debug.Print x
    x = Int(CSng(Interval)) & " days " & Format(Interval, "hh") _
    & " Hours " & Format(Interval, "nn") & " Minutes " & _
    Format(Interval, "ss") & " Seconds"
    Debug.Print x

    End Function
  3. Geben Sie folgende Zeile im Direktfenster ein, und drücken Sie die [EINGABETASTE]:

    ? ElapsedTime(#6/1/1999 8:23:00PM#-#6/1/1999 8:12:12AM#) Es werden die folgenden Werte angezeigt:

    43848 Sekunden
    730:48 Minuten:Sekunden
    12:10:48 Stunden:Minuten:Sekunden
    0 Tage 12 Stunden 10 Minuten 48 Sekunden

Vergleichen von Datumsdaten

Da Datumsangaben und Uhrzeiten gemeinsam als Zahlen mit doppelter Genauigkeit gespeichert werden, erhalten Sie möglicherweise unerwartete Ergebnisse, wenn Sie Datum/Uhrzeit-Daten vergleichen. Wenn Sie beispielsweise Folgendes in das Direktfenster eingeben, erhalten Sie ein Ergebnis False (Falsch), selbst wenn das heutige Datum der 31.3.1999 (3/31/1999) wäre: Die Funktion Now() gibt eine Zahl mit doppelter Genauigkeit zurück, die das aktuelle Datum und die aktuelle Uhrzeit angibt. Die Funktion DateValue() jedoch gibt eine Ganzzahl zurück, die das Datum, aber nicht den Bruchwert der Uhrzeit darstellt. Daher entspricht Now() nur DateValue(), wenn Now() eine Uhrzeit von 00:00:00 (12:00:00 AM) zurückgibt.

Um präzise Ergebnisse zu erhalten, wenn Sie Datumswerte vergleichen, verwenden Sie eine der folgenden Funktionen. Um jede Funktion zu testen, geben Sie die Funktion in das Direktfenster ein, ersetzen Sie das aktuelle Datum durch 3/31/1999, und drücken Sie dann die [EINGABETASTE]:

  • Um eine Ganzzahl zurückzugeben, verwenden Sie die Funktion Date():

  • Um den Bruchteil der Funktion Now() zu entfernen, verwenden Sie die Funktion Int():

Vergleichen von Uhrzeitdaten

Wenn Sie Uhrzeitwerte vergleichen, erhalten Sie möglicherweise inkonsistente Ergebnisse, da ein Uhrzeitwert als Bruchteil einer Gleitkommazahl mit doppelter Genauigkeit gespeichert wird. Wenn Sie beispielsweise Folgendes in das Direktfenster eingeben, erhalten Sie ein falsches Ergebnis (0), selbst wenn die beiden Uhrzeitwerte identisch aussehen: Wenn Access einen Uhrzeitwert in einen Bruch umwandelt, stimmt das errechnete Ergebnis möglicherweise nicht mit dem Uhrzeitwert überein. Die geringe Differenz, die durch die Berechnung entsteht, reicht aus, um ein falsches Ergebnis (0) zu erzielen, wenn Sie einen gespeicherten Wert mit einem konstanten Wert vergleichen.

Um präzise Ergebnisse zu erhalten, wenn Sie Uhrzeitwerte vergleichen, verwenden Sie eine der folgenden Methoden. Um jede Methode zu testen, geben Sie sie jeweils in das Direktfenster ein, und drücken Sie dann die [EINGABETASTE]:

Hinzufügen eines zugeordneten Datums zum Uhrzeitvergleich:

var1 = #1/1/99 2:01:00 PM#
var2 = DateAdd("n", 10, var1)
? var2 = #1/1/99 2:11:00 PM#Konvertieren der Uhrzeitwerte in Zeichenfolgen-Datentypen vor dem Vergleich:

var1 = #2:01:00 PM#
var2 = DateAdd("n", 10, var1)
? CStr(var2) = CStr(#2:11:00 PM#)Verwenden der Funktion "DateDiff()" zum Vergleichen präziser Einheiten wie Sekunden:

var1 = #2:01:00 PM#
var2 = DateAdd("n", 10, var1)
? DateDiff("s", var2, #2:11:00 PM#) = 0

Informationsquellen

Weitere Informationen zur Berechnung von Datumswerten und Uhrzeitwerten finden Sie im folgenden Artikel der Microsoft Knowledge Base:

210604 Funktionen zur Berechnung und Anzeige von Datum/Uhrzeit

Weitere Informationen zum Formatieren von Datum/Uhrzeit-Datentypen finden Sie in der integrierten Hilfe von Microsoft Access. Klicken Sie im Menü ? auf Microsoft Access-Hilfe, und geben Sie Format Eigenschaft - Datentyp Datum/Uhrzeit in den Office- oder Hilfe-Assistenten ein. Klicken Sie danach auf Suchen, um das Thema anzuzeigen.

Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.

Benötigen Sie weitere Hilfe?

Ihre Office-Fähigkeiten erweitern
Schulungen erkunden
Neue Funktionen als Erster erhalten
Microsoft Insider beitreten

War diese Information hilfreich?

Vielen Dank für Ihr Feedback!

Vielen Dank für Ihr Feedback. Es klingt, als ob es hilfreich sein könnte, Sie mit einem unserer Office-Supportmitarbeiter zu verbinden.

×