Home > Artikel > Ausgabe 4/2011 > Abfragen: Datum und Zeit

Abfragen: Datum und Zeit

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Wenn Sie Datum- und Zeitangaben in einer Tabelle speichern, werden Sie auch in Abfragen über diese Informationen auf Datensätze zugreifen wollen. Damit beantworten Sie dann Fragen wie “Wieviele Artikel wurden in einem bestimmten Zeitraum verkauft?”. Beim Zusammenstellen der Vergleichskriterien gibt es jedoch einiges zu beachten.

Beispiele

Die Beispiele dieses Artikels finden Sie in der Beispieldatenbank Access_Basics_2011_04.mdb.

Einfache Vergleiche mit Datumswerten

Bereits beim einfachen Vergleichen bestehender Werte mit Datumskriterien fällt auf, dass Access als Kriterium angegebene Datums- und Zeitangaben gleich ändert. Wenn Sie etwa wie in Bild 1 ein einfaches Datum eingeben, wandelt Access dieses Kriterium in den Ausdruck #17.05.2011# um.

Eingabe eines einfachen Datums als Kriterium

Bild 1: Eingabe eines einfachen Datums als Kriterium

Für die folgenden Beispiele haben wir eine kleine Tabelle namens tblTermine angelegt, die schlicht einige Datensätze mit verschiedenen Terminen enthält (siehe Bild 2). Das Ergebnis der Abfrage nach Terminen mit dem Datum 17.5.2011 liefert erstaunlicherweise nur den Termin mit der ID 1 zurück, obwohl der folgende Datensatz als Datum auch den 17.5.2011 enthält (siehe Bild 3).

Tabelle mit einigen Terminen

Bild 2: Tabelle mit einigen Terminen

Sind das alle Termine am 17.5.2011?

Bild 3: Sind das alle Termine am 17.5.2011?

Der Grund erschließt sich, wenn Sie sich die Natur eines Datumsfeldes ansehen: Es enthält intern einen Double-Wert, dessen Stellen vor dem Komma die Anzahl der Tage nach dem 30.12.1899 darstellen und deren Nachkommastellen die Uhrzeit repräsentieren. Der erste Datensatz enthält also eigentlich den Wert 40680 im Feld Termin, während dieser Wert im zweiten Datensatz 40680,7155787037 lautet. Und genau diese beiden Werte vergleicht die Abfrage auch: Sie sind nicht gleich, und deshalb zeigt die Abfrage nur den ersten Wert an.

Zeiträume abfragen

Wie also erhalten wir alle Datensätze, deren Termin auf den 17.5.2011 fällt? Access liefert für Abfragen die Zwischen-Klausel. Probieren wir es also mit dem Ausdruck Zwischen #17.05.2011# Und #18.05.2011# als Kriterium für das Feld Termin (siehe Bild 4). Das Ergebnis liefert diesmal zwar beide Termine, die am 17.5.2011 stattfinden, aber auch den vom 18.5.2011.

Abfrage mit einem Zwischen-Kriterium

Bild 4: Abfrage mit einem Zwischen-Kriterium

Klar: Das Kriterium lautete ja prinzipiell auch Zwischen 40680 Und 40681, und dort fällt der 18.5.2011 mit einem Zahlenwert von 40681 genau hinein. Das Zwischen-Schlüsselwort ist also nur auf den ersten Blick praktisch. Einfacher ist es hier, mit den herkömmlichen Operatoren wie Größer (>), Kleiner (<), Größer/Gleich (>=), Kleiner/Gleich (<=) oder Gleich (=) zu arbeiten. Dies sieht für unseren Fall wie in Bild 5 aus.

Eingrenzen des Datums mit anderen Mitteln

Bild 5: Eingrenzen des Datums mit anderen Mitteln

Alle Datumsangaben zu einem Tag ermitteln

Wenn Sie diese Abfrage mit einem Parameter zur Eingabe eines Datums ausstatten möchten und die Abfrage alle Datensätze zurückliefern soll, die zu dem mit dem Parameter übergebenen Tag gehören, verwenden Sie diesen Ausdruck als Kriterium (siehe Bild 6):

Termine eines Tages mit Parameter

Bild 6: Termine eines Tages mit Parameter

>=[Datum] Und

Die DatAdd-Funktion addiert einen Tag zum Parameter [Datum] hinzu.

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!